mysql8分组后随机取n条数据

这篇博客介绍了在MySQL8之后如何利用PARTITION BY语法来实现按字段分组并从每个分组中提取前10条数据的方法。传统的子查询方法可能无法奏效,但通过使用row_number() over (PARTITION BY ...)可以有效地解决这一问题。这种方法对于需要在分组数据中获取特定数量样本的情况非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天接到一个需求,要求按照某几个字段分组,每个分组提取 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的博客-优快云博客
https://blog.youkuaiyun.com/weixin_39730284/article/details/110587189

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值