一尘不染

查询以从表中获得前2名和3名记录

sql

我有一个学生列表:

Student         SECTION
student1        A
student2        A
student3        A
student4        A
student5        B
student6        B
student7        B
student8        B

我想随机获得总计5名学生3名A科学生和2名B科学生

完成一次“建议简单的SQL查询”

示例:我想随机合并以下查询

select * from student where SECTION='A' LIMIT 3
select * from student where SECTION='B' LIMIT 2

阅读 133

收藏
2021-03-08

共1个答案

一尘不染

您非常接近:

(select * from student where SECTION = 'A' order by rand() LIMIT 3
) union all
(select * from student where SECTION = 'B' order by rand() LIMIT 2
)
order by rand();

子查询用于order by rand()获取每个年级的随机学生。外部order by rand()将五个学生随机分组。

注意:这是完成所需内容的最简单方法。如果students表的大小适中,而性能是一个问题,则可以选择其他解决方案。

2021-03-08