选择MYSQL中每组前5条记录

选择MYSQL中每组前5条记录,mysql,group-by,aggregate-functions,Mysql,Group By,Aggregate Functions,我正在尝试获取一个分组结果,每组只有前5行。。我不知道怎么做 问题是: SELECT O.rest_brId as BRID, O.`reason` as REASON , count(O.reason) as OCCURENCES FROM orders O WHERE O.status = 4 GROUP BY BRID, REASON HAVING count(O.reason) 目前的结果是: 我想要的是每个新娘都有我不能评论,但你不需要按发生次数排序DESC,然后限制5次

我正在尝试获取一个分组结果,每组只有前5行。。我不知道怎么做

问题是:

SELECT O.rest_brId as BRID, O.`reason` as REASON , count(O.reason) as 
OCCURENCES 
FROM orders O 
WHERE O.status = 4 
GROUP BY BRID, REASON 
HAVING count(O.reason)
目前的结果是:


我想要的是每个新娘都有我不能评论,但你不需要
按发生次数排序DESC
,然后
限制5次吗?

这不是你可以在每组中排名前n的方式。。每个组的top n需要一个带有COUNT(*)或MySQL用户变量的相关子查询来模拟组内的行数()。。MySQL 8可以使用窗口函数ROW_NUMBER(),然后道歉,我误解了手中的问题-我以为海报要求将结果限制在每个
BRID
发生次数前5个原因