服装公司电子商务网站建设策划书,百度地图实时街景怎么移动,低代码开发平台公司,织梦57网站的友情链接怎么做一、EXISTS 关键字介绍
关键字介绍EXISTS 关联子查询通常也会和 EXISTS操作符一起来使用#xff0c;用来检查在子查询中是否存在满足条件的行。 如果在子查询中当前的行不满足条件#xff1a;返回 FALSE#xff0c;继续在子查询中查找 如果在子查询中当前的行满足条件…一、EXISTS 关键字介绍
关键字介绍EXISTS 关联子查询通常也会和 EXISTS操作符一起来使用用来检查在子查询中是否存在满足条件的行。 如果在子查询中当前的行不满足条件返回 FALSE继续在子查询中查找 如果在子查询中当前的行满足条件不在子查询中继续查找条件返回 TRUE NOT EXISTSNOT EXISTS关键字表示如果不存在某种条件则返回TRUE否则返回FALSE。
二、案例解释
2.1 示例一
查询公司管理者的employee_idlast_namejob_iddepartment_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
)