当前位置: 首页 > news >正文

第18章 EXISTS 与 NOT EXISTS 关键字

一、EXISTS 关键字介绍

关键字介绍
EXISTS

关联子查询通常也会和 EXISTS操作符一起来使用,用来检查在子查询中是否存在满足条件的行。

如果在子查询中当前的行不满足条件:返回 FALSE,继续在子查询中查找

如果在子查询中当前的行满足条件:不在子查询中继续查找,条件返回 TRUE

NOT EXISTSNOT EXISTS关键字表示如果不存在某种条件,则返回TRUE,否则返回FALSE。

二、案例解释

2.1 示例一

查询公司管理者的employee_id,last_name,job_id,department_id信息。

# 方式一:自连接
SELECT DISTINCT e2.employee_id,e2.last_name,e2.job_id,e2.department_id
FROM employees e1 JOIN employees e2 
ON e1.manager_id = e2.employee_id# 方式二:子查询
SELECT employee_id,last_name,job_id,department_id
FROM employees 
WHERE employee_id IN (SELECT DISTINCT manager_idFROM employeesWHERE manager_id IS NOT NULL
)# 方式三:使用EXISTS
SELECT employee_id,last_name,job_id,department_id
FROM employees e1
WHERE EXISTS (SELECT *FROM employees e2WHERE e1.employee_id = e2.manager_id
)
#解释:从e1中传入一条数据到子查询中,依次取出e2中的数据与该条数据对比
#    如果不满足条件,返回FALSE,继续子查询中的下一条数据。
#    如果满足条件,返回TRUE,结束子查询。继续外查询的下一条数据。

2.2 示例二

查询departments表中,不存在于employees表中的部门的department_id和department_name

# 方式一:使用 NOT IN
SELECT department_id,department_name
FROM departments
WHERE department_id NOT IN (SELECT DISTINCT department_idFROM employeesWHERE department_id IS NOT NULL
)
#解释:NOT IN 判断的是会不会在子查询结果的集合中,会先将子查询执行完毕得出结果集合,
#		然后拿外查询中的每一条在子查询的结果集中查找。所以是不相关子查询。没必要与外部表
#		建立筛选条件。 所以使用NOT IN时,要注意子查询结果不要有空值,否则最终不会有结果。# 方式二:使用 NOT EXISTS
SELECT department_id,department_name
FROM departments d1
WHERE NOT EXISTS (SELECT *FROM employees e2WHERE d1.department_id = e2.department_id
)

http://www.lryc.cn/news/489766.html

相关文章:

  • Windows多JDK版本管理工具JVMs
  • 【C++】初始化列表、类型转换
  • 创新设计,精准仿真|SOLIDWORKS Simulation 2025新功能
  • vue3封装Element Plus table表格组件
  • Qt之QWidget相关
  • 用web前端写出一个高校官网
  • 【笔记】Android Gradle Plugin配置文件相关说明-libs.versions.toml
  • 如何修复WordPress卡在维护模式
  • glob三个函数的效果
  • FreeRTOS:事件标志组与任务通知
  • c++11的动态类型
  • 付费会员渗透难,腾讯音乐的触顶挑战
  • 内网安全隧道搭建-ngrok-frp-nps-sapp
  • Load-Balanced-Online-OJ(负载均衡式在线OJ)
  • Postman之变量操作
  • 查找字符串中某个字符返回字符位置
  • 《数学物理学报》
  • 39页PDF | 毕马威_数据资产运营白皮书(限免下载)
  • K8s 一键部署 MongoDB 的 Replica-Set 和 MongoDB-Express
  • 2024小迪安全基础入门第四课
  • 一文详解使用java easyexcel导出文件的几种情况
  • 【蓝桥杯C/C++】深入解析I/O高效性能优化:std::ios::sync_with_stdio(false)
  • NUXT3学习日记四(路由中间件、导航守卫)
  • 数据科学与SQL:组距分组分析 | 区间分布问题
  • odoo18中模型的常用字段类型
  • 【如何用更少的数据作出更好的决策】-gpt生成
  • ara::com 与 AUTOSAR 元模型的关系总结
  • springboot整合hive
  • 浅谈 proxy
  • Ansys Maxwell:SheetScan - 导入材料特性曲线