现有 2 张表
course
course_id int 课程 ID
score float 课程得分,满分 100,60 及格
student_id int 学生 ID
student
student_id int 学生 ID
name int 学生姓名
一个学生可能有多个课程得分(即 student 一对多于 course )
现定义一个学生及格的条件为所有课程中只要有一门课程及格则算及格,只有所有课程不及格的情况下才算不及格
求所有及格的学生和所有不及格的学生。
及格很简单
SELECT
s.student_id,
s.name
FROM
student s
INNER JOIN
course c
ON
s.student_id = c.student_id
WHERE
c.score >= 60
GROUP BY
student_id
但是不及格却不能直接以 WHERE c.score < 60 GROUP BY student_id 得出结果
问除了使用 ( NOT IN 及格的学生)的结果 还有什么比较好的方法?
此处只是模拟真实场景,实际上的条件比score >= 60要多,所以不应该特别针对此处使用MIN来做...(如果回复有我会再说明的)