[5243][SQL Server][T-SQL]except(差集)的用法

[5243][SQL Server][T-SQL]except(差集)的用法

假如有2個資料表的資料,因為某些原因,必須比對2個資料表資料的差異,除了筆數一樣,還必須做到資料一模一樣,

除了使用select count ( * ) from A和select count ( * ) from B比較筆數一樣外,可以使用

select * from A
except
select * from B

(任何欄位值不同,皆會被列出,列出A存在但B不存在的資料)

select * from B
except
select * from A

(列出B存在但A不存在的資料)


另外也支援類似union的語法:
select * from A
except
select * from B
except
select * from C

 

另外值得注意的是,比對count( * )並不是數量的減法,

例如資料表A有10筆,資料表B有8筆,則

select count( * ) from A
except
select count( *)  from B

結果會是10(比對數字不同),而不是2 (減法10-8)