UNION
、INTERSECT
和EXCEPT
用于将多个查询结果集进行组合,从而得到一个最终结果。
语法
query
{ UNION [ ALL ] | INTERSECT | EXCEPT }
query
参数
UNION
:返回两个查询表达式的集合运算。UNION ALL
:ALL
关键字用于保留UNION
中产生的重复行。INTERSECT
:返回只有在两个集合中同时出现的行,返回结果将删除两个集合中的重复行。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;