mysql分组查询出每组的前10条数据

版块表section:
版块表section

文章表article:
文章表article

需求为一次查询出所有版块字段,和属于这个版块的前10条文章(字段id,title,content即可),其中article中的sid对应section中的id

阅读 9.9k
2 个回答

可以这么操作:

SELECT *, result.row_number
FROM
  (SELECT *, (@num:=IF(@group = `sid`, @num +1, IF(@group := `sid`, 1, 1))) row_number
    FROM article
    ORDER BY sid) result
WHERE row_number <= 10
;

article表按照sid排序,然后每一行记录一个row_number,这个row_number的计算方法如上。

希望能帮助到你。

我按照你的操作,第一次查询会查询所有的数据。第二次查询才得到预期的结果。
第一次查询结果:
图片.png
相同的语句,第二次查询的结果:
图片.png

两次查询结果条数不一致。第一次查询到的row_number都为1,第二次查询到的才是正确的结果。不知道为什么会这样,有没有人解答下?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题