1. 程式人生 > >資料的差集;利用sql server取兩個資料集的交、差、補集

資料的差集;利用sql server取兩個資料集的交、差、補集

差集:

需求:選出在t1表中但不在t2表中的資料

補集:

A是B的子集,求A相對於B的補集。

SQLServer中通過intersect,union,except和三個關鍵字對應交、並、差三種集合運算。

他們的對應關係可以參考下面圖示

測試示例:

構造A,B兩個資料集

A:1,2,3,4
B:1,2,5
WITH A AS
(SELECT '1' tno
UNION ALL SELECT  '2' UNION ALL SELECT  '3' UNION ALL SELECT  '4' 
),
B AS(SELECT '1' tno
UNION ALL SELECT  '2' UNION ALL SELECT  '5')

查詢示例:

1 Union 取合集並過濾重複資料

--1 Union 取合集並過濾重複資料
--結果顯示: 1,2,3,4,5
SELECT * FROM A
UNION   
SELECT * FROM B;

2 Union all 取合集不過濾重複資料

--2 Union all 取合集不過濾重複資料
--結果顯示:1,2,3,4,1,2,5
SELECT * FROM A
UNION  all
SELECT * FROM B;

3 Intersect 取交集(兩個表中都有資料)

--3 Intersect 取交集
--結果顯示:1,2
SELECT * FROM A
Intersect  
SELECT * FROM B;

4 except 取差集(取A-B的記錄)

--4 except 取差集
--結果顯示:3,4
SELECT * FROM A
except  
SELECT * FROM B;