摘要: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')
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')
From dbo.使用者資料
INTERSECT
Select *
From dbo.使用者資料
Where 身分證 in ('A891234567', 'A123456789', 'A912345678')
結果:
參考:
EXCEPT 和 INTERSECT (Transact-SQL)
使用 EXCEPT 和 INTERSECT 執行半聯結
使用 UNION、EXCEPT 和 INTERSECT 搭配其他 Transact-SQL 陳述式