SQL - 實作 EXCEPT 和 INTERSECT

摘要:SQL - 實作 EXCEPT 和 INTERSECT

當 我看到 EXCEPT 和 INTERSECT 時,想到以前有人問過的問題,那問題是:「我要如何得知兩張表,有哪寫是重複的,有哪些是 A 表沒有的」,以前可能會 inner 下條件,可能再加上暫存資料表來存結果。不過,在 SQL Server 2005 時,微軟提供了這兩個指令 EXCEPT 和 INTERSECT,以下就來看看...

EXCEPT:會從左側查詢中傳回在右側查詢中找不到的任何個別值

Code:
 

Select *  
From dbo.使用者資料  
EXCEPT  
Select *  
From dbo.使用者資料  
Where 身分證 in ('A891234567', 'A123456789', 'A912345678')


結果:


INTERSECT:會傳回 INTERSECT 運算元左右兩側查詢都傳回的任何個別值

Code:
 

Select *  
From dbo.使用者資料  
INTERSECT  
Select *  
From dbo.使用者資料  
Where 身分證 in ('A891234567', 'A123456789', 'A912345678')


結果:


參考:

EXCEPT 和 INTERSECT (Transact-SQL)
使用 EXCEPT 和 INTERSECT 執行半聯結
使用 UNION、EXCEPT 和 INTERSECT 搭配其他 Transact-SQL 陳述式