思路
这道题呢用到了存在量词 not exists
查询了选修了全部课程的学生的姓名,
也可看作下面这句话↓👇
没有一门课程是不选修的学生的姓名
双重否定就等于肯定,
最里面的子查询,将三个表都联系起来。如果有返回值那么说明第一个外层where返回值为 false
第二个where返回值为true
以此来判断,那个学生选修了所有的课程。
SELECT
sname
FROM
student
WHERE
NOT EXISTS (
SELECT
*
FROM
course
WHERE
NOT EXISTS (
SELECT
*
FROM
sc
WHERE
student.sno = sc.sno
AND sc.cno = course.cno
)
)