关于 Exists 的几种嵌套查询实践
这里人个实践关于Exists、not Exists 的两层嵌套查询,其实知道了两层的嵌套查询就可以推知多层嵌套查询,并且两层嵌套还有口诀可记。
1、 Exists 、 not Exists 单独应用
题目:
a、 检索选修了课程的同学信息 = 可理解为:查找所有学生表中存在 于学生选课表中的学生记录
b、 检索没有选修了课程的同学信息 = 可理解为:查找所有学生表中不存在 于学生选课表中的学生记录
2、 Exists 、 not Exists 组合应用
a、检索所有学生都没有选修的课程 = 可理解为:查找出所有学生都不存在( NOT EXISTS )选修了某个课程的课程信息。
b、检索没有选修“数据结构”课程的学生信息 = 可理解为:查找出学生中存在( EXISTS )没有选修(即不存在选修)“数据结构”的学生信息

a、 查询选修了所有课程的学生信息 = 可理解为:查找出不存在任何课程不存在于选课表中被某个学生全部选修的学生信息。
关于 EXISTS 嵌套应用与单个 EXISTS 应用一样不再举例。以上的嵌套都可以用其他查询方法实现,但EXISTS 的应用会比用到的in、连接关键字(LEFT/RIGHT/INNER)、集合关键字(MINUS/INTERSECT)速度要快些写出来的语句有时要比他要简洁很多。当然如果把 EXISTS 与 IN/NOT IN 组合来应用有时会更好, IN/NOT IN 不适合用于大的子结合因为这样会耗时很多。
age:
(1)、 查出选修了全部课程或没有选修课程的学生信息
(2) 查询出没有选修“ Java 语言”、“ C++ 语言”或没有选修任何课程的学生信息
(3)、 查询出选修了“王五 =2010003 ”同学的全部选修课程的学生信息
等等,如果有三四层嵌套甚至更多嵌套,个人最多用到三层到四层的嵌套情况,理解也是类似于上。欢迎大家指出更多的关于EXISTS的嵌套情况。