例如: 有两个表:
在“教师”表中,它包含教师的详细信息
Teacher_Id   Teacher_Name<br/>
1         Akshay<br/>
2         Rohan<br/>
3         Suresh<br/>
4         Naresh<br/>
在“学生”表中,包含学生的详细信息
Student_Id   Student_Name  Teacher_Id  Marks<br/>
1        Abhi        1        50<br/>
2        Kumar        2        28<br/>
3        Rahul        2        90<br/>
4        Mohan        4        39<br/>
5        Anil        3        51<br/>
6        Jack        4        38<br/>
7        Daniel        2        78<br/>
8        Arun        3        66<br/>
9        Mark        1        43<br/>
10        Mukesh        4        99<br/>
您会看到一位老师与多名学生相关联。 我想挑选所有学生都通过考试的老师(及格分数为40)。 例如:教师为Teacher_Id = 2的老师与3个成绩分别为28、90、78的学生相关联。成绩为28的学生考试不及格。因此,我们不会选择那个老师。我们不会选择那些只有一个学生分数低于40分的老师。我们必须选择所有学生得分都超过40分的老师。
答案 0 :(得分:0)
我们可以在此处使用条件聚合:
SELECT
t.Teacher_Name,
t.Teacher_Id
FROM Teacher t
INNER JOIN Student s
ON t.Teacher_Id = s.Teacher_Id
GROUP BY
t.Teacher_Name,
t.Teacher_Id
HAVING
COUNT(CASE WHEN s.Marks < 40 THEN 1 END) = 0;
另一个选项使用EXISTS
:
SELECT
t.Teacher_Name,
t.Teacher_Id
FROM Teacher t
WHERE NOT EXISTS (SELECT 1 FROM Student s
WHERE t.Teacher_Id = s.Teacher_Id AND s.Marks < 40);