SQL查询实现:根据指定科目列表筛选修完所有对应科目的学生
SQL 实现方案
针对筛选同时修完全部指定科目的学生的需求,可以用分组+聚合判断的方式实现,兼容绝大多数主流数据库:
需求1:查询同时修读Maths、Science、Language1三门科目的学生
SELECT Student FROM Student_subject WHERE Subject IN ('Maths', 'Science', 'Language1') GROUP BY Student -- 符合条件的科目数等于指定科目总数,说明所有科目都已修读 HAVING COUNT(DISTINCT Subject) = 3;
执行后会返回预期结果:Rohan、RAJ。
注:如果你的表不存在同一个学生同一科目重复录入的情况,可以去掉COUNT里的DISTINCT,执行性能更好
需求2:查询同时修读Maths、Science两门科目的学生
SELECT Student FROM Student_subject WHERE Subject IN ('Maths', 'Science') GROUP BY Student HAVING COUNT(DISTINCT Subject) = 2;
执行后返回结果为Rohan、RAJ,不会包含仅修了Maths的SAM。
内容的提问来源于stack exchange,提问作者MShaikh
相关产品推荐
相关产品推荐

