資料的差集;利用sql server取兩個資料集的交、差、補集
阿新 • • 發佈:2018-12-13
差集:
需求:選出在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;