【发布时间】:2014-11-07 01:10:03
【问题描述】:
我有两个 SQL 表 users 和 messages,如下所示:
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 查询,该查询将为每个 user 生成最新的 message,由 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
【问题讨论】:
-
请用您正在使用的数据库标记您的问题。
标签: sql postgresql greatest-n-per-group