ANY、SOME、ALL关键字

带any嵌套查询
select emp.empno,emp.ename,emp.sal from scott.emp where
sal>any(select sal from scott.emp where job='manager');
等价于
select sal
from scott.emp where job='manager' 结果为 sal:2975 2850 2450
select
emp.empno,emp.ename,emp.sal from scott.emp where sal>2975 or sal>2850 or
sal>2450

带some嵌套查询
select emp.empno,emp.ename,emp.sal from
scott.emp where sal=some(select sal from scott.emp where
job='manager');
等价于
select sal from scott.emp where job='manager' 结果为
sal:2975 2850 2450
select emp.empno,emp.ename,emp.sal from scott.emp where
sal=2975 or sal=2850 or sal=2450
注:any与some是等价的

带all嵌套查询
select
emp.empno,emp.ename,emp.sal from scott.emp where sal>all(select sal from
scott.emp where job='manager');
等价于
select sal from scott.emp where
job='manager' 结果为 sal:2975 2850 2450
select emp.empno,emp.ename,emp.sal from
scott.emp where sal>2975 and sal>2850 and sal>2450

IN、ANY与SOME等价。
NOT IN 与 <> ALL 等价。
 IN 与 EXISTS 的区别:IN 会编列子查询的每行记录,然后再返回,而EXISTS 则只要遇到第一个满足条件的记录就马上返回。

posted @ 2012-10-18 15:22  sshh  阅读(205)  评论(0编辑  收藏  举报