如何查询X列中每个值的最新行?

时间:2011-01-19 10:45:12

标签: sql mysql

我正在尝试查询X列中每个值的最新行。

我目前的尝试是:

SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X

但是,虽然结果中的第一列包含最新的时间戳,但其他列不是来自最近的行。

我该如何解决?

3 个答案:

答案 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;