SELECT 每条 3 条评论 post

SELECT 3 comments for each post

我有一个tablecomments

id | comment | post_id |
1     Hey       1
2     Hey       2
3     Hey       2
4     Hey       3
5     Hey       1

我希望每个帖子获得 3 条评论。

我在下面做了类似的事情。

"select * from comments WHERE post_id IN(1,2,3) LIMIT 3"

但这只让我得到 3 rows

但我希望每个 post_id 最大 3 rows 而不是总计 3 rows

对我出错的地方有帮助吗?

这就像根据 post_id 进行分区,然后在该分区中选择 3 个元素 您可以使用 mysql 变量

来实现
select id, comment, post_id
from 
(
SELECT id, comment, post_id, @row_number:=CASE WHEN @post_id=post_id THEN @row_number+1 ELSE 1 END AS row_number,
       @post_id:=post_id AS varval
FROM comments
join (select @row_number := 0, @post_id := NULL ) as var
order by post_id, id 
) t
where t.row_number <=3