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(交集):會傳回左右兩側輸入查詢運算子所輸出的相異資料列。
若要結合使用 EXCEPT 或 INTERSECT 兩個查詢的結果集,基本規則如下:
- 在所有查詢中,資料行的數目和順序都必須相同。
- 資料類型必須相容。
[MSDN] 設定運算子 - EXCEPT 和 INTERSECT (Transact-SQL)
[SQL] Order By 1 什麼意思?