在postgres中,如何在多对一关系中选择包含多列的顶部Y出现的顶部X行



这个问题不是很清楚,但有一个表可以帮助解释。假设我有一个像下面这样的表posts,它以多对一的关系将用户ID映射到他们在社交媒体平台上发布的消息。

user_id post_message
user_1 "来自用户一的一些帖子">
user_1 "来自用户one的另一个帖子">
user_2 ";来自用户二的随机帖子">
user_2 ";来自用户二的又一个帖子">
user_3 "用户三的第一个帖子">
user_3 "用户三的第二个帖子">

使用dense_rank

select user_id, post_message
from (
select user_id, post_message, dense_rank() over( order by  user_id) r
from posts
) t
where r<=2

最新更新