在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,它们都是分组的。
感谢。
答案 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,以最佳解决方案处理同一问题。