Oracle ALL, ANY and SOME比较
2016-04-20 16:20
573 查看
ALL
TheALLcomparison condition is used to compare a value to a list or subquery. It must be preceded by =, !=, >, <, <=, >= and followed by a list or subquery.
When the
ALLcondition is followed by a list, the optimizer expands the initial condition to all elements of the list and strings them together with
ANDoperators
比较对象:一个值;一系列值或是子查询
位置:前 : =, !=, >, <, <=, >= ; 后 : 一系列值或子查询;
当比较对象是一系列值时,等价于 and连接这一系列值的分个比较;
SELECT empno, sal FROM emp WHERE sal > ALL (2000, 3000, 4000); -- Transformed to equivalent statement without ALL. SELECT empno, sal FROM emp WHERE sal > 2000 AND sal > 3000 AND sal > 4000;当比较对象是子查询时,会先转译为any,然后转译为exists进行查询.并且子查询返回0行时,取比较结果为TRUE.
SELECT e1.empno, e1.sal FROM emp e1 WHERE e1.sal > ALL (SELECT e2.sal FROM emp e2 WHERE e2.deptno = 20); -- Transformed to equivalent statement using ANY. SELECT e1.empno, e1.sal FROM emp e1 WHERE NOT (e1.sal <= ANY (SELECT e2.sal FROM emp e2 WHERE e2.deptno = 20)); -- Transformed to equivalent statement without ANY. SELECT e1.empno, e1.sal FROM emp e1 WHERE NOT EXISTS (SELECT e2.sal FROM emp e2 WHERE e2.deptno = 20 AND e1.sal <= e2.sal);
ANY
TheANYcomparison condition is used to compare a value to a list or subquery. It must be preceded by =, !=, >, <, <=, >= and followed by a list or subquery.
When the
ANYcondition is followed by a list, the optimizer expands the initial condition to all elements of the list and strings them together with
ORoperators.
比较对象:一个值;一系列值或是子查询
位置:前 : =, !=, >, <, <=, >= ; 后 : 一系列值或子查询;
当比较对象是一系列值时,等价于 or 连接这一系列值的分个比较;
SELECT empno, sal FROM emp WHERE sal > ANY (2000, 3000, 4000); -- Transformed to equivalent statement without ANY. SELECT empno, sal FROM emp WHERE sal > 2000 OR sal > 3000 OR sal > 4000;当比较对象是子查询时,会转译为exists进行查询.并且子查询返回0行时,取比较结果为False.
SELECT e1.empno, e1.sal FROM emp e1 WHERE e1.sal > ANY (SELECT e2.sal FROM emp e2 WHERE e2.deptno = 10); -- Transformed to equivalent statement without ANY. SELECT e1.empno, e1.sal FROM emp e1 WHERE EXISTS (SELECT e2.sal FROM emp e2 WHERE e2.deptno = 10 AND e1.sal > e2.sal);
SOME
TheSOMEand
ANYcomparison conditions do exactly the same thing and are completely interchangeable.
some
some和any是一致的,二者可以相互转化;
相关文章推荐
- Oracle闪回设置
- RMAN异机恢复
- Oracle中to_number()函数的学习
- 一次归档故障的解决(ORA-00257错误)
- oracle nested table
- Oracle 集合类型介绍
- oracle客户端导出dmp文件
- Oracle数据库使用入门
- oracle安装
- 关于mysql 和oracle 的常用字符串操作
- oracle中的常用系统相关命令及系统表
- Oracle性能优化
- ORACLE SEQUENCE 具体解释
- oracle 捕获异常,不中断游标循环
- Oracle 删除重复的记录,只保留一条
- 【Oracle】ORA-27102:错误
- ORACLE schedule job设置
- mvc C# JavaScript LigerUI oracle实现用户的注册、登陆验证、登陆
- windows下dg备库连接需要设置ORACLE_SID
- oracle安装报错 /lib/i386/libawt.so:libXt.so.6:cannot open shared object file