登录
首页 >  数据库 >  MySQL

mysql如何在排序后在每个分组中随机抽取多个数据

来源:SegmentFault

时间:2023-02-24 15:29:57 171浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《mysql如何在排序后在每个分组中随机抽取多个数据》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下MySQL,希望所有认真读完的童鞋们,都有实质性的提高。

记录一下最近在项目中遇到的问题,由于项目的历史遗留原因,导致在数据库需要单表查询这样一组数据:生成随机考卷可以从任意题库中选择任意题型的任意题目数量。题库为题型表中的一个字段,表结构如下

image.png

根据可用条件,题库类型,和题目数量都是未知的,由于表结构问题导致后台需要多次循环,为了简化一下操作选取试卷所需要的最大题目数:

首先要求随机:

 select *,rand() as ndex_name from exam_radio_serv order by bank_id , ndex_name desc

image.png

增加随机字段,再排个序,排序的作用类似于分组,这段没有问题之后就简单了:

select t2.* from( select 
 @e:=case when @customer_no=t1.bank_id then @e+1 else 1 end as num,
 @customer_no:=t1.bank_id as stu_age,t1.* from
 (select id,bank_id,rand() as ndex_name from exam_radio_serv order by bank_id , ndex_name desc)t1)t2 where num

image.png

总的来说就是添加了两个伪字段,对已经排好序的数据再在前面添加一个序号字段,再取每个组中的前几条,由于排序是根据rand()来的,所以每次排序的顺序不一样,bank_id作为前置的分组条件保证随机排序在可控范围内

以上就是《mysql如何在排序后在每个分组中随机抽取多个数据》的详细内容,更多关于mysql的资料请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>