赞
踩
集合运算符查询组合两个组件查询的结果到一个结果,包含集合运算符的查询称为复合查询。SQL集合运算符如下:
集合运算符
Operator | Returns |
---|---|
| All distinct rows selected by either query |
| All rows selected by either query, including all duplicates |
| All distinct rows selected by both queries |
| All distinct rows selected by the first query but not the second |
你可以使用集合运算符UNION,UNION ALL,INTERSECT和MINUS组合多个查询。所有集合运算符具有相同的优先级。如果一个SQL语句包含多个集合运算符,那么Oracle数据库按照从左到有解析他们,除非使用括号显示指定另外的顺序。
在复合查询的查询组件的查询列表中的对应表达式数量必须相匹配,且必须是相同数据类型组(如数字和字符)。
如果查询组件查询字符数据,则返回值的数据类型被以下确定:
如果查询组件查询数值数据,则返回值的数据类型由数字的优先级确定:
在使用集合运算符的查询中,Oracle不会跨越数据类型组执行隐式转换。因此,如果查询组件对应的表达解析为数字类型和字符类型,Oracle会返回一个错误。
集合运算符受以下限制:
for_update_clause
子句。select e.deptno
from emp e
union
select d.deptno from dept d;
select e.deptno
from emp e
union all
select d.deptno from dept d;
select e.deptno
from emp e
intersect
select d.deptno from dept d;
select d.deptno
from dept d
minus
select e.deptno from emp e;
select to_binary_float(3)
from dual
intersect
select 3f from dual;
select 3
from dual
intersect
select 3f from dual;
Oracle不能跨数据类型组转换,因此该查询是无效的
select '3'
from dual
intersect
select 3f from dual
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。