UNION、INTERSECT和EXCEPT用于将多个查询语句的结果集进行组合,从而形成一个最终结果。
query
{ UNION [ ALL ] | INTERSECT | EXCEPT | MINUS }
query
参数
UNION:返回两个查询表达式的集合运算。
UNION ALL:ALL关键字用于保留由UNION生成的任何重复行。
INTERSECT:返回派生自两个查询表达式的行的集合运算。返回结果中将丢弃未同时由两个表达式返回的行。
EXCEPT| MINUS:返回派生自两个查询表达式之一的行的集合运算。返回的结果行必须存在于第一个结果表而不存在于第二个结果表中。MINUS和EXCEPT完全同义。
计算顺序
- UNION和EXCEPT集合运算符是左关联的,如果未指定圆括号来影响优先顺序,则将以从左到右的顺序来计算这些集合运算符的组合。例如,在以下查询中,首先计算T1和T2的UNION,然后对UNION结果执行EXCEPT操作:
select * from t1
union
select * from t2
except
select * from t3
order by c1;
- 在同一个查询中使用运算符组合时,INTERSECT运算符优先于UNION和EXCEPT运算符。例如,以下查询将计算T2和T3的交集,然后计算得到的结果与T1 的并集:
select * from t1
union
select * from t2
intersect
select * from t3
order by c1;
- 通过添加圆括号,可以强制实施不同的计算顺序。在以下示例中,将T1和T2的并集结果与T3执行交集运算,并且查询可能会生成不同的结果。
(select * from t1
union
select * from t2)
intersect
(select * from t3)
order by c1;
文档内容是否对您有帮助?