我正在尝试查询X列中每个值的最新行。
我目前的尝试是:
SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X
但是,虽然结果中的第一列包含最新的时间戳,但其他列不是来自最近的行。
我该如何解决?
答案 0 :(得分:2)
SELECT M.*
from
(
SELECT X, max(mytimestamp) MaxT
FROM mytable
GROUP BY X
) N
inner join mytable M on M.X = N.X and M.mytimestamp = N.MaxT
虽然MySQL允许您在GROUP BY查询中混合聚合和非聚合列..但请不要。考虑类似于您所拥有的场景:
SELECT max(mytimestamp) MaxT, min(mytimestamp) MinT, mytable.*
FROM mytable
GROUP BY X
考虑一下,让我知道列应该来自哪个记录(提示:最大或最小)。
答案 1 :(得分:0)
这只涉及一张桌子?那么为什么不呢:
select * from mytable order by mytimestamp desc limit 1
答案 2 :(得分:0)
我认为你不需要这个小组:
SELECT max(timestamp),mytable。* FROM mytable limt 1;