在我的SQL查询中,我选择的数据是 GROUP BY 和 ORDER BY 子句。该表在多行中具有相同的numbers
,每行具有不同的时间。所以我想我想应用 GROUP BY 子句。
然而,在结果中返回最早的时间和数字,但我需要最近的时间。
SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC
查询看起来好像应首先应用 GROUP BY 然后 ORDER BY ...但结果似乎不会以这种方式运行。
有什么方法可以解决这个问题吗?
答案 0 :(得分:17)
SELECT *
FROM table t
WHERE time = (
SELECT max(time)
FROM table
WHERE t.numbers = numbers
)
答案 1 :(得分:15)
解决方法是将查询重写为:
SELECT * FROM (SELECT * FROM table ORDER BY time DESC) AS t GROUP BY numbers;
答案 2 :(得分:1)
SELECT * FROM table
WHERE time IN (
SELECT MAX(time)
FROM table
GROUP BY numbers
)
答案 3 :(得分:0)
根据手册,您可以按列表向组添加desc:
例如:
group by item1,item2 desc,item3
有或没有汇总。
我试过这个,它适用于Ubuntu版本5.5.58。参考页面是: https://dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html
答案 4 :(得分:-5)
SELECT * FROM TABLE GROUP BY numbers DESC;
这将为您提供小组的最后一条记录。
由于