高级查询运算符:EXCEPT/INTERSECT/UNION

1、用集合运算符组合查询
UNION、EXCEPT 以及 INTERSECT 集合运算符使您能够将两个或更多外层查询组合成单个查询。执行用这些集合运算符连接的每个查询并组合各个查询的结果。根据运算符不同,产生不同的结果。

2、UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

3、EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

4、INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

5、当使用 UNION、EXCEPT 以及 INTERSECT 运算符时,记住下列事项:
运算符的查询选择列表中的所有对应项必须是相容的。有关更多信息,参见 SQL Reference 中的数据类型相容性表。
ORDER BY 子句(如果使用该子句的话)必须放在最后一个带有集合运算符的查询后面。对于每个运算符来说,如果列的名称与查询的选择列表中对应项的名称相同,则该列名只能在 ORDER BY 子句中使用。


相同点:三个运算符都是对两个“SQL语句”所产生的结果做处理的


不同点:

EXCEPT 比较像 NOT (这个值要存在于第一句,但不存在于第二句才会被选出)
INTERSECT 则比较像 AND (这个值要同时存在于第一句和第二句才会被选出)
UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出)


详细:

EXCEPT:http://332374363.blog.51cto.com/5262696/1068296
INTERSECT:http://332374363.blog.51cto.com/5262696/1069593
UNION:http://332374363.blog.51cto.com/5262696/1069605

 

参考:http://hi.baidu.com/dsqspaul/item/08e452346f191ef72684f4f5