如何指定GROUP BY的顺序?

时间:2013-02-28 10:53:28

标签: mysql

在GROUP BY QID时,如何确保仅返回最新的行?

ID, QID, VALUE, TIMESTAMP
45,1,Male,1362044759
58,1,Female,1362045122
59,1,Male,1362045149
60,1,Female,1362045153
82,1,Female,1362045863
83,1,Female,1362045887
92,1,Male,1362046012
101,1,Female, 1362046401

SELECT ID, QID, VALUE, TIMESTAMP FROM table GROUP BY ID

...返回第一行。我不能简单地做一个LIMIT 1,因为这只是一个例子,表中有很多QID,它们都是分组的。

感谢。

3 个答案:

答案 0 :(得分:1)

我假设你想要每个QID的“最新”行。您通常会使用派生表子查询来获取每个QID的最新TIMESTAMP值,然后加入其中:

SELECT ...
FROM myTable AS t
INNER JOIN (SELECT QID, MAX(`TIMESTAMP`) AS MaxT FROM myTable GROUP BY QID) l
    ON t.QID = l.QID AND l.maxT = t.`TIMESTAMP`

这也是假设您的TIMESTAMP列随着时间的推移而增加。

答案 1 :(得分:0)

您可以使用'GROUP_CONCAT'来提取分组数据。

SELECT GROUP_CONCAT(ID ORDER BY TIMESTAMP DESC) AS latest_id

答案 2 :(得分:0)

如果您想要返回最新记录:

SELECT *
FROM TBL
ORDER BY `TIMESTAMP` DESC
LIMIT 1;

否则,如果您想获取每组QID的最新记录,请选中此Stack Overflow Post,以最佳解决方案处理同一问题。

相关问题