查询没有学全所有课程的同学的信息
MySQL练习题50道:查询没有学全所有课程的同学的信息
背景
MySQL经典练习题及答案,常用SQL语句练习50题
题目描述
查询没有学全所有课程的同学的信息
答案
| s_id |
s_name |
s_birth |
s_sex |
| 05 |
周梅 |
1991-12-01 |
女 |
| 06 |
吴兰 |
1992-03-01 |
女 |
| 07 |
郑竹 |
1989-07-01 |
女 |
| 08 |
王菊 |
1990-01-20 |
女 |
题目解析
这个题目咋一看比较复杂,把问题转化一下:假设总课程数是n,查询出所学课程数小于n的学生信息。这样,只需要求出n和每个学生所学的课程数即可。
1 2 3 4 5
| select stu.s_id, count(sc.c_id) from student stu left join score sc on stu.s_id = sc.s_id group by stu.s_id
|
1
| select count(c_id) from course
|
- 将n作为第一个sql的查询条件,使用
having连接。完整sql如下
1 2 3 4 5 6 7
| select stu.* from student stu left join score sc on stu.s_id = sc.s_id group by stu.s_id having count(sc.c_id) < (select count(c_id) from course);
|