有人可以告诉我如何使用group by子句,按表中的一个键分组,但最新的时间戳在顶部吗?我有多行数据,但我只想显示最新的行
答案 0 :(得分:1)
如果您只想要每组最近的一个:
SELECT somefield
FROM table t1
WHERE timestamp = (SELECT MAX(timestamp)
FROM table t2
WHERE t1.somefield = t2.somefield);
或者只是最新的最新版本:
SELECT somefield
FROM table
GROUP BY somefield
ORDER BY MAX(timestamp) DESC
LIMIT 1;
答案 1 :(得分:1)
我认为你正在寻找ORDER BY
条款。
SELECT Foo.Bar, Foo.SomeTimestamp
FROM Foo
ORDER BY Foo.SomeTimestamp DESC
如果您按列分组,则可能会返回汇总数据。如果时间戳对于每行聚合数据都是唯一的,则可能需要使用MAX
函数(或类似函数)为每个组返回单个时间戳。例如:
SELECT Foo.TypeID, SUM(Foo.Price) AS Price, MAX(Foo.OrderDate) AS LastOrder
FROM Foo
GROUP BY Foo.TypeID
ORDER BY MAX(Foo.OrderDate) DESC
如果您只想要第一行,可以使用LIMIT
子句:
SELECT Foo.Bar, Foo.SomeTimestamp
FROM Foo
ORDER BY Foo.SomeTimestamp DESC
LIMIT 0, 1
从第0行开始,最多返回1行。