为每篇文章选择3条评论

时间:2015-01-07 18:39:39

标签: php mysql sql group-by limit

我有一张表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

我出错的任何帮助?

1 个答案:

答案 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