MSDN上關於EXCEPT和INTERSECT的文檔。MSDN上關於UNION的文檔。
值得注意的是,UNION其實有兩種,一種是普通的UNION,另外一種是UNION ALL。加上EXCEPT和INTERSECT構成了T-SQL中的四種Set操作。
- UNION ALL:把左表和右表合成一張表並返回;
- UNION:把左表和右表去除重複項後,合成一張表並返回。換言之,UNION的結果集中沒有重複項。
- EXCEPT:去除左表中曾出現在右表中的項,將左表中剩餘項返回。換言之,EXCEPT返回一個結果集,其中所有的項都只在左表中出現且並未出現在右表中。
- INTERSECT:返回左表和右表都出現過的項。
示例一,找出所有沒有生成Order的Customer:
SELECT [ID] FROM Customers
EXCEPT
SELECT [ID] FROM Orders;
GO
示例二,找出所有既是Customer又是Vendor:
SELECT [ID] FROM Customers
INTERSECT
SELECT [ID] FROM Vendors;
GO
是爲之記。
Alva Chien
2016.6.15