gpt4 book ai didi

mysql - [MySQL]如何先排序再分组?

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:11 25 4
gpt4 key购买 nike

我有这样的表和数据:

    id hour name
1 0 a1
1 1 a2
1 2 a3
1 3 a4
2 1 a5
2 1 a6
2 2 a7
2 3 a8
3 1 a9
3 0 a10
4 1 a11
4 1 a12
5 1 a13
……

我想找到一些 ID,例如 (1,2,4 ....) 以及 ID 的最大(小时)和唯一 ID

结果如下:

id  hour  name
1 3 a4
2 3 a8
3 1 a9
4 1 a12
....

我尝试分组依据和排序依据,但都失败了。怎么写呢?谢谢。

第一次,当我写问题时丢失了一些信息,所以可能有些答案不是我想要的。所以我更新了问题。对不起,我第一次使用stackowverflow,对不起我的错误。

这是我错误的 sql:select * from tb where id in(1,2,3,4) group by id order by hour desc.

我知道如何编写正确的方法:

这是错误的:

按tb从tb组中选择id, max(hour);

这是对的:

SELECT a.id, a.maxhour, b.name从 ( SELECT id, max(hour) AS maxhour, 名称 来自结核病 其中 id 在 (1,2,3,4) 按 id 分组) 在 a.id = b.id 和 a.maxhour = b.hour 上加入 tb b

谢谢所有的 friend 。你的回答让我知道该怎么做

最佳答案

您需要使用聚合函数max()group by:

SELECT id, MAX(hour) AS mhour FROM tablename
GROUP BY id
ORDER BY mhour DESC

您可以使用相关子查询

    SELECT id, hour, name FROM tablename a
WHERE CAST(LTRIM(REPLACE(name,'a','')) AS int) IN (SELECT MAX(CAST(LTRIM(REPLACE(name,'a','')) AS int)) FROM tablename b WHERE a.id=b.id)
ORDER BY hour DESC

关于mysql - [MySQL]如何先排序再分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54938093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com