列子查询
子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。
常用的操作符:IN 、NOT IN 、 ANY 、SOME 、 ALL
| |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
注意in,not in 和其它操作符的区别,in可以直接连接字段名和后面的子查询,但是其它操作符在字段名和操作符中间还要加上常用运算符才行。
以查询 "销售部" 和 "市场部" 的所有员工信息为例:
使用in
select *
from emp
where dept_id in (select id from dept where name = '销售部' or name = '市场部');
使用any/some
select *
from emp
where dept_id = any (select id from dept where dept.name='销售部' or dept.name='市场部');
一般来说,其它操作符使用的范围比in更广,比如说求最值的时候,
以查询比 财务部 所有人工资都高的员工信息为例(最大值就是大于所有的值):
select *
from emp
where salary > all (select salary from emp where dept_id=(select id from dept wherename='财务部'));
大于任意一个人的值就salary > any(xxxxx)就行了