ORACLE 高级子查询

开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:刘俊杰
撰写时间:2019年03月27日

子查询是嵌套在SQL语句中的另一个SELECT语,在主查询执行之前执行,然后再跟主查询里面的数据对比。
今天说一个运用于子查询中的EXISTS操作符
EXISTS 操作符检查在子查询中是否存在满足条件的行

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

如果在子查询中不存在满足条件的行:
– 条件返回 FALSE
– 继续在子查询中查找
下面带来一个EXISTS操作符应用的举例:

查询EMPLOYEES表中管理者的信息

select *
from employees e
where exists(select 'X'
             	from employees
            	where manager_id=
             	e.employee_id);

上面是EXISTS操作符的应用,只需要把EXISTS操作符放在WHERE后面然后跟子查询对比就行了,用起来很简单。
上面SELECT查询后面那个’X’主要是为了不出错,因为在查询后面要查询需要查询出来的数据如果没有需要查询的数据的话会报错无法查询。

下面这个是查询出来的结果:
ORACLE 高级子查询

既然有可以检查满足条件的行,那必然也有检查不满足条件的行,如果要检查不满足条件的行,只需要在EXISTS前面加一个NOT就行了
问题:查询EMPLOYEES表中不是管理者的信息

select *
from employees e
where not exists(select 'X'
             		from employees
             		where manager_id=
             		e.employee_id);

查询出来的结果
ORACLE 高级子查询