我有两个SQL表users
和messages
它看起来像这样:获取最新的结果与GROUP BY基于JOIN
user_id | username
--------|---------
1 | alice
2 | bob
3 | carol
message_id | sending_user_id | message | created_utc
-----------|-----------------|---------|-------------
1| 1 | a | 67
2| 1 | b | 68
3| 3 | c | 69
4| 2 | d | 70
5| 3 | e | 71
6| 1 | f | 72
我试图写一个SQL查询,将导致最新message
每user
由created_utc
排列的message
取消。所以结果应该是这样的:
message_id | sending_user_id | message | created_utc | sending_username
-----------|-----------------|---------|-------------|----------------------
6| 1 | f | 72 | alice
5| 3 | e | 71 | carol
4| 2 | d | 70 | bob
我卡在如何保证信息总是最新的用下面的查询:
SELECT messages.message_id, messages.sending_user_id, messages.message, messages.created_utc, users.username AS sending_username
FROM messages
LEFT JOIN ON users
WHERE messages.sending_user_id=users.user_id
GROUP BY messages.sending_user_id
ORDER BY messages.created_utc DESC
编辑:我使用PostgreSQL 9.3.5
请标记与你的问题你正在使用的数据库。 – 2014-11-07 01:11:47
@GordonLinoff done – 2014-11-07 01:14:54
许多相同的问题。 http://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group/7630564 – 2014-11-07 02:55:27