如何使用GROUP BY获取每个组中的最新记录?
假设我有一个messages
带有列的表:
id | from_id | to_id | subject | message | timestamp
我只想从每个用户那里获取最新消息,就像您在深入实际线程之前在FaceBook收件箱中看到的那样。
此查询似乎使我接近所需的结果:
SELECT * FROM messages GROUP BY from_id
但是查询给我的是来自每个用户的最旧消息,而不是最新消息。
我不知道这一点。
回答:
您应该找出timestamp
每个组(子查询)中的最后一个值,然后将此子查询加入到表中-
SELECT t1.* FROM messages t1 JOIN (SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id) t2
ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;
以上是 如何使用GROUP BY获取每个组中的最新记录? 的全部内容, 来源链接: utcz.com/qa/427769.html