Home [SQL] 集合運算子 Except (差集)
Post
Cancel

[SQL] 集合運算子 Except (差集)

Minus會取得兩個Select語法間的差,只有Oracle才能使用。

Sql Server 可以使用 Except

範例

取得存在於負責人清單的負責人id、姓名,但是不存在於分站負責人清單的分店負責人的負責人列表

1
2
3
4
5
6
7
--取得存在於負責人清單的負責人id、姓名,但是不存在於分站負責人清單的分店負責人的負責人列表
--差集概念, 可以用Except

select [負責人ID], [負責人姓名] from [負責人清單]
except --差集
select [分店負責人ID], [分店負責人姓名] from [分店負責人清單]
order by 1 --按第一個欄位排序

order by 1:數字1表示按select的第一個欄位排序。
order by 1,2,3:ORDER BY後面的數字 1,2,3 分別代表select後面的第1、第2、第3個欄位。
使用集合運算子時,當各select語法中的欄位名有所不同時,就要在order by語法中指定「欄位編號」。

執行結果

1
2
3
4
5
6
7
8
負責人ID	負責人姓名
1	鈴木
2	小野
3	齋藤
5	小林
6	伊藤
7	佐瀨
8	宇賀神

Except

比較兩個查詢的結果來傳回相異的資料列。

  • EXCEPT (差集):會從左側的輸入查詢傳回相異資料列,而不會從右側輸入查詢的輸出傳回。
  • INTERSECT(交集):會傳回左右兩側輸入查詢運算子所輸出的相異資料列。

若要結合使用 EXCEPTINTERSECT 兩個查詢的結果集,基本規則如下:

  • 在所有查詢中,資料行的數目和順序都必須相同。
  • 資料類型必須相容。

[MSDN] 設定運算子 - EXCEPT 和 INTERSECT (Transact-SQL)
[SQL] Order By 1 什麼意思?

This post is licensed under CC BY 4.0 by the author.