Sql 每个用户id限制3行
我有一个疑问:Sql 每个用户id限制3行,sql,postgresql,greatest-n-per-group,Sql,Postgresql,Greatest N Per Group,我有一个疑问: SELECT users.id, users.name, messages.id, messages.name FROM messages INNER JOIN users on messages.user_id = users.id WHERE users.active = true ORDER BY users.id, messages.sent_at 我希望查询返回每个users.id的前3行,是否可能 我在stackoverflow或任何其他网站上都没有发现类似的
SELECT users.id, users.name, messages.id, messages.name
FROM messages
INNER JOIN users on messages.user_id = users.id
WHERE users.active = true
ORDER BY users.id, messages.sent_at
我希望查询返回每个users.id的前3行,是否可能
我在stackoverflow或任何其他网站上都没有发现类似的问题。我感谢您的回答或有用的链接。谢谢您可以在子查询/派生表中使用行号:
select users_id, users_name, messages_id, messages_name
from (
SELECT users.id as users_id, users.name as users_name, messages.id as messages_id, messages.name as messages_name, messages.sent_at
, row_number() over (partition by users.id order by messages.sent_at) as rn
FROM messages
INNER JOIN users on messages.user_id = users.id
WHERE users.active = true
) as sub
where rn < 4
ORDER BY users_id, sent_at
谢谢你,@SqlZim!我知道答案是windows功能,但不知道怎么做。@Erick很乐意帮忙!