mysql8分组后随机取n条数据

今天接到一个需求,要求按照某几个字段分组,每个分组提取 10 条数据,百度了一下,大部分文章介绍的都是一下这种方法:

select * from emp as a where 10> (select count(*) from emp where deptno = a.deptno and sal < a.sal  )  order by a.deptno ,a.sal

以上方法我没有测试出来,但是在继续搜索中得知,mysql8 之后可以使用 PARTITION BY 语法,所以换用以下方式成功提取到数据:

SELECT a.* FROM (SELECT *, row_number() over (PARTITION BY deptno, sal) AS num FROM emp ) a WHERE a.num <= 10

via:
mysql8 分组后随机取 n 条数据 - 膨胀的面包
https://blog.wangtwothree.com/code/145.html

mysql 每个分类取5条_MySQL:如何查询出每个分组中的 top n 条记录?_weixin_39730284的博客-CSDN博客
https://blog.csdn.net/weixin_39730284/article/details/110587189

MySQL 分组后取每组前N条数据 - duyunchao - 博客园
https://www.cnblogs.com/duyunchao-2261/p/7460294.html


版权声明:本文为weixin_41287692原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。