【记录问题,还未一定验证正确性】
例如有如下数据:
学生表stu[stu_id, stu_name]1, xiaoming;
2, xiaofang;
3, xiaozhi;
课程表course[course_id, course_name]
a, '语文';
b, '数学';
c, '英语';
d, '物理';
e, '化学';
f, '生物';
学生选课表t_stu_course[stu_id, course_id]
1, a;
1, b;
1, c;
1, d;
2, a;
2, b;
2, c;
3, b;
3, d;
3, e;
3, f;
查询出只选择了[语文、数学、英语、物理]这四门课程的学生, 所以只有[1, xiaoming]选择[a,b,c,d]这四门课程
--begin
--找出course_id只能是这个4个的数据的stu_id
select stu_id, count(stu_id) ks
from t_stu_course
--在A集合里面找出course_id只能在这4个值中间的
where course_id in ('语文',
'数学',
'英语',
'物理')
--再次根据stu_id分组,已计算课数列ks
group by stu_id
having stu_id in
--找出只有4个数据的所有stu_id [我们称下面SQL语句查出来的数据叫做A集合]
(select stu_id
from t_stu_course
group by stu_id
having count(stu_id) = 4)
--课数列必须等于4
and count(stu_id) = 4
--end
本文将指导您如何使用SQL查询语句筛选出仅选择了特定课程的学生,通过分组计数并验证条件,实现精确的数据筛选。
977

被折叠的 条评论
为什么被折叠?



