我想查询最近的一排为每个值在一列X.如何查询列X中每个值的最近行?
我现在的尝试是:
SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X
,但同时在结果第一列包含了最新的时间标记,其他列不是来自最近的行。
我该如何解决这个问题?
我想查询最近的一排为每个值在一列X.如何查询列X中每个值的最近行?
我现在的尝试是:
SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X
,但同时在结果第一列包含了最新的时间标记,其他列不是来自最近的行。
我该如何解决这个问题?
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
想想看,让我知道列应该来自哪个记录(提示:最大或最小)。
这只涉及一张表吗?那么,为什么不这样:
select * from mytable order by mytimestamp desc limit 1
我不认为你需要通过群组:
SELECT MAX(时间戳),MYTABLE * FROM MYTABLE LIMT 1;
我需要列X中每个不同值的结果 – arturh 2011-01-19 11:22:56
正确 - 您从未在您的问题中说过!或者至少不清楚。示例输出和示例数据将有帮助 – diagonalbatman 2011-01-19 13:13:31
因为我需要在列X中的每个不同值的结果 – arturh 2011-01-19 11:22:34