Except只會回傳經過distinct的資料列

常常用Except來比對資料差異性,但一直不知道Except有個雷。那就是會distinct回傳的資料列,日前看見楊志強老師分享文才知道,汗顏......

下面的腳本中我建立兩張資料表TbA及TbB,TbA會比TbB多寫入2筆id為1及name是rock的資料。 

Create Table TbA(id int,name varchar(10));
Create Table TbB(id int,name varchar(10));
GO
Insert Into TbA Values(1,'rock'),(1,'rock'),(2,'cary'),(3,'Daniel');
Insert Into TbB Values(2,'cary'),(3,'Daniel');
GO
Select * From TbA
Except
Select * From TbB
GO

 

 

執行上述腳本後可以發現SQL只回傳一筆id為1及name是rock的資料。

 

注意 : 請小心服用

 

我是ROCK

rockchang@mails.fju.edu.tw