关于 Exists 的几种嵌套查询

关于 Exists 的几种嵌套查询实践

这里人个实践关于Exists、not Exists 的两层嵌套查询,其实知道了两层的嵌套查询就可以推知多层嵌套查询,并且两层嵌套还有口诀可记。

相关查询表结构


1、 Exists not Exists 单独应用

NOT EXISTS/EXISTS

题目:

a、 检索选修了课程的同学信息 = 可理解为:查找所有学生表中存在 于学生选课表中的学生记录

单独查询结果


b、 检索没有选修了课程的同学信息 = 可理解为:查找所有学生表中不存在 于学生选课表中的学生记录

not exists 查询


2、 Exists not Exists 组合应用

NOT EXISTS 与 EXISTS 第一组合

a、检索所有学生都没有选修的课程 = 可理解为:查找出所有学生都不存在( NOT EXISTS )选修了某个课程的课程信息。

组合a的查询结果


b、检索没有选修“数据结构”课程的学生信息 = 可理解为:查找出学生中存在( EXISTS )没有选修(即不存在选修)“数据结构”的学生信息

exists与not exists


not exists 与 exists

a、 查询选修了所有课程的学生信息 = 可理解为:查找出不存在任何课程不存在于选课表中被某个学生全部选修的学生信息。

NOT EXISTS 嵌套

关于 EXISTS 嵌套应用与单个 EXISTS 应用一样不再举例。以上的嵌套都可以用其他查询方法实现,但EXISTS 的应用会比用到的in、连接关键字(LEFT/RIGHT/INNER)、集合关键字(MINUS/INTERSECT)速度要快些写出来的语句有时要比他要简洁很多。当然如果把 EXISTS 与 IN/NOT IN 组合来应用有时会更好, IN/NOT IN 不适合用于大的子结合因为这样会耗时很多。

age:

(1)、 查出选修了全部课程或没有选修课程的学生信息

其他事例1

(2) 查询出没有选修“ Java 语言”、“ C++ 语言”或没有选修任何课程的学生信息

not exists and in 组合

(3)、 查询出选修了“王五 =2010003 ”同学的全部选修课程的学生信息

选修了某个学生的全部选修课程的学生信息

等等,如果有三四层嵌套甚至更多嵌套,个人最多用到三层到四层的嵌套情况,理解也是类似于上。欢迎大家指出更多的关于EXISTS的嵌套情况。

  • 21
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值