MINUS
?是 Oracle 數據庫中的一種集合操作符,用于返回第一個查詢結果中存在但第二個查詢結果中?不存在?的?唯一行。其核心功能是?排除交集數據,常用于數據差異分析或過濾特定記錄
一、核心功能
-
排除交集:返回第一個查詢結果中?不在第二個查詢結果中出現的行。
-
自動去重:結果集中的每行數據唯一(即使原查詢結果有重復)。
-
排序輸出:默認按第一列升序排序(除非顯式指定?
ORDER BY
)。
?SELECT column1, column2, ... FROM table1
MINUS
SELECT column1, column2, ... FROM table2
[ORDER BY column1, column2, ...];
關鍵規則:
-
列數與類型匹配:所有?
SELECT
?語句的列數必須相同,對應列的數據類型必須兼容。 -
列名以第一個查詢為準:最終結果集的列名由第一個?
SELECT
?語句決定。
?場景 :數據遷移驗證
-- 檢查舊表中有但新表中缺失的記錄
SELECT product_id FROM old_inventory
MINUS
SELECT product_id FROM new_inventory;
二、與相似操作的對比
操作符 | 功能 | 是否去重 | 是否排序 |
---|---|---|---|
MINUS | 返回第一個查詢存在但第二個查詢不存在的行 | 是 | 是(默認) |
NOT EXISTS | 通過子查詢排除匹配行 | 否 | 否 |
LEFT JOIN ... WHERE b.key IS NULL | 類似?MINUS ,但保留左表所有未匹配行 |
特性 | 說明 |
---|---|
功能 | 返回第一個查詢中存在但第二個查詢中不存在的唯一行。 |
去重 | 自動去除重復行。 |
排序 | 默認按第一列升序排序,可通過?ORDER BY ?自定義。 |
性能優化 | 優先使用索引,考慮替代方案(如?NOT EXISTS ?或?LEFT JOIN )處理大數據集。 |
適用場景 | 數據差異分析、排除特定記錄、數據完整性驗證等。 |