如何查找包含最新消息的群组?

How to find groups with most recent messages?

我有两个表 messagesgroups

条消息

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