知识点:用exists和not exists实现逻辑蕴含
select distinct Sno
from SC x
where not exists(select *
from SC y
where y.Sno='200215122' and not exists(select *
from SC z
where z.Sno=x.Sno and z.Cno=y.Cno));
理解:1->2->3
1、找到一类学生,最低条件为必须选修了学号为200215122学生的全部课程,此外,还可以选修其他课程
2、只要是学号为200215122学生选修的课,该类学生都选修了
3、在该类学生中,不存在这样的学生,对于一门课程,学号为200215122的学生选修了,而他没有选修(双重否定表示肯定)
还可以通过谓词逻辑的转换来理解