首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 聯合主鍵查詢技巧:以多欄位組合判斷資料重複

     編輯:Oracle 資料庫基礎

前言

在資料遷移或整合專案中,常需從多張來源表匯入同一張目標表,且來源資料可能包含重複筆數。若在匯入前未妥善比對,極易造成目標表髒資料。本文分享一個實用技巧:利用多個欄位串聯形成「聯合主鍵」,快速判斷資料是否重複,並妥善處理欄位為 NULL 的情況。

常見誤區:GROUP BY + HAVING 效率低

初學者常用 GROUP BY ... HAVING COUNT(*) > 1 找出重複資料,再人工比對。此法不僅步驟繁瑣,對大量資料更是效能殺手,屬於「笨方法」。

進階作法:欄位串聯模擬聯合主鍵

資深 DBA 建議:將用於判斷唯一性的三個欄位(如 col1、col2、col3)串聯成一個字串,作為臨時主鍵進行比對。關鍵在於某欄位可能為 NULL,Oracle 中 NULL 參與串聯會導致整體結果為 NULL,故需用 NVL 將 NULL 轉為空字串 ''。

實戰 SQL 範例

SELECT * 
FROM t1 
WHERE NVL(col1, '') || NVL(col2, '') || col3 
NOT IN (SELECT col1 || col2 || col3 FROM t2);

上述查詢會找出 t1 中、依三欄位組合後在 t2 不存在的筆數,再將這些不重複資料 INSERT 進 t2 即可完成去重匯入。

小結

以欄位串聯模擬聯合主鍵,搭配 NVL 處理空值,是判斷多欄位唯一性的輕量高效寫法,適用於資料遷移、ETL 去重等場景,能大幅簡化邏輯並提升執行效能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved