在本教學中,將學習如何使用SQL Server EXCEPT
從另一個查詢的另一個結果集中減去查詢的結果集。
SQL Server EXCEPT簡介
SQL Server EXCEPT
比較兩個查詢的結果集,並返回第一個查詢中不是由第二個查詢輸出的不同行。 換句話說,EXCEPT
從一個查詢結果中減去另一個查詢的結果集。
以下是SQL Server EXCEPT
的語法:
query_1
EXCEPT
query_2
以下是在上述語法中組合兩個查詢的結果集的規則:
- 兩個查詢中列的數量和順序必須相同。
- 相應列的數據類型必須相同或相容。
下圖顯示了兩個結果集T1
和T2
的EXCEPT
操作:
在此圖中:
T1
結果集包括:1
,2
和3
。T2
結果集包括:2
,3
和4
。
T1
和T2
差集結果將返回1
,它是在T1
結果集中,並T2
結果集中沒有出現的行。
SQL Server EXCEPT示例
請參閱示例資料庫中的兩個表products
和order_items
:
1. 簡單EXCEPT示例
以下示例使用EXCEPT
運算符查找沒有銷售的產品:
SELECT
product_id
FROM
production.products
EXCEPT
SELECT
product_id
FROM
sales.order_items;
執行上面查詢語句,得到以下結果:
在此示例中,第一個查詢返回所有產品。 第二個查詢返回有銷售額的產品。 因此,結果集僅包括沒有銷售的產品。
2. EXCEPT ORDER BY示例
要對EXCEPT
運算符創建的結果集進行排序,可在最後一個查詢中添加ORDER BY
子句。 例如,以下示例查找沒有銷售的產品,並按ID按昇冪對產品進行排序。
SELECT
product_id
FROM
production.products
EXCEPT
SELECT
product_id
FROM
sales.order_items
ORDER BY
product_id;
執行上面查詢語句,得到以下結果:
上一篇:
SQL Server集合操作符
下一篇:
SQL Server約束