我有一张表comments
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
。
但我希望每个3 rows
的最大post_id
不是3 rows
。
我出错的任何帮助?
答案 0 :(得分:1)
就像基于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