子查询的返回结果是多行数据. 此时, 不能再使用普通的比较运算符了.
多行记录比较运算符:
一、any
- Ø ANY: 跟结果中的任何一个数据进行比较
查询工资低于任何一个“CLERK”的工资的雇员信息
select * from emp where sal<ANY(select sal from emp where job='CLERK') and job<>'CLERK'; |
【注意】any操作符后接多行子查询返回列表中的每一个值。
<any为小于最大的
>any为大于最小的。
二、all
- Ø ALL: 跟结果中的所有数据进行比较
查询工资比所有的“SALESMAN”都高的雇员的编号、名字和工资
select empno, ename, sal from emp where sal>ALL(select sal from emp where job='SALESMAN'); |
【注意】all操作符比较子查询返回列表中的每一个值。
<all为小于最小的
>all为大于最大的
=all无意义,一般不写。
三、in
- Ø IN: 等于结果中的任何一个
查询部门20中职务同部门10的雇员一样的雇员信息
select * from emp where job in (select job from emp where deptno=10) and deptno=20; |
select * from emp where job =any (select job from emp where deptno=10) and deptno=20; |