如何通过显示最新的数据行来使用组

时间:2009-08-04 01:45:51

标签: mysql

有人可以告诉我如何使用group by子句,按表中的一个键分组,但最新的时间戳在顶部吗?我有多行数据,但我只想显示最新的行

2 个答案:

答案 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行。