如何查找包含最新消息的群组?
How to find groups with most recent messages?
我有两个表 messages
和 groups
条消息
id, content, group_id, created_at
组
id, created_at
我想查找 n
个按其中最新消息排序的组数。我如何使用 PostgreSQL 14 做到这一点?
我运行下面的查询,但它没有给出预期的结果。
SELECT *
FROM (
SELECT id, group_id, created_at, row_number() OVER (PARTITION BY group_id ) AS rn
FROM messages order by created_at desc
) sub;
如果我理解正确,你可以尝试让 ORDER BY created_at desc
进入 window 函数,这可能会帮助你获得每个 group_id
的最高行数
SELECT *
FROM (
SELECT *, row_number() OVER (PARTITION BY group_id order by created_at desc) AS rn
FROM messages
) sub
WHERE rn = 1
我有两个表 messages
和 groups
条消息
id, content, group_id, created_at
组
id, created_at
我想查找 n
个按其中最新消息排序的组数。我如何使用 PostgreSQL 14 做到这一点?
我运行下面的查询,但它没有给出预期的结果。
SELECT *
FROM (
SELECT id, group_id, created_at, row_number() OVER (PARTITION BY group_id ) AS rn
FROM messages order by created_at desc
) sub;
如果我理解正确,你可以尝试让 ORDER BY created_at desc
进入 window 函数,这可能会帮助你获得每个 group_id
SELECT *
FROM (
SELECT *, row_number() OVER (PARTITION BY group_id order by created_at desc) AS rn
FROM messages
) sub
WHERE rn = 1