SQL Minus運算符
在本教程中,您將學習如何使用SQL MINUS
運算符從另一個結果集中減去一個結果集。
1. SQL MINUS運算符簡介
除了UNION,UNION ALL和INTERSECT運算符之外,SQL還爲我們提供了MINUS
運算符,用於從另一個結果集中減去一個結果集。
以下是MINUS
運算符的語法。
SELECT
id
FROM
A
MINUS
SELECT
id
FROM
B;
要使用MINUS
運算符,可以編寫單獨的SELECT
語句並將MINUS
運算符放在它們之間。 MINUS
運算符返回第一個查詢生成的唯一行,但不返回第二個查詢生成的唯一行。
下圖是MINUS
運算符的說明。
爲了獲得結果集,數據庫系統執行兩個查詢並從第二個查詢中減去第一個查詢的結果集。
要使用MINUS
運算符,SELECT
子句中的列必須匹配,並且必須具有相同或至少可轉換的數據類型。
我們經常在ETL
中使用MINUS
運算符。 ETL是數據倉庫系統中的軟件組件。 ETL代表Extract,Transform和Load。 ETL負責將數據從源系統加載到數據倉庫系統。
完成加載數據後,可以使用MINUS
運算符通過從源系統中的數據中減去目標系統中的數據來確保數據已完全加載。
2. SQL MINUS示例
請考慮示例數據庫中的 employees
和 dependents
表,它們的關係如下所示:
每個員工都有零個或多個家屬,而每個員工依賴於一個且只有一個員工。 家屬與員工之間的關係是一對多的關係。
dependents
表中的employee_id
列引用employees
表中的employee_id
列。
可以使用MINUS
運算符查找沒有任何家屬的員工。 要執行此操作,請從dependents
表中的employee_id
結果集中減去employees
表中的employee_id
結果集。
以下查詢實現了這個想法:
SELECT
employee_id
FROM
employees
MINUS
SELECT
employee_id
FROM
dependents;
執行上面查詢語句,得到以下結果:
2.1. SQL MINUS使用ORDER BY示例
要對MINUS
運算符返回的結果集進行排序,請將ORDER BY子句放在最後一個SELECT
語句的末尾。
例如,要對沒有任何家屬的員工進行排序,請使用以下查詢:
SELECT
employee_id
FROM
employees
MINUS
SELECT
employee_id
FROM
dependents
ORDER BY employee_id;
執行上面查詢語句,得到以下結果:
通過本文的學習,現在您應該對SQL MINUS
運算符有一個很好的理解,並知道如何應用它來比較兩個結果集。