Oracle中刪除表中的重複資料

djπ發表於2024-08-02

確定重複資料:首先,你需要確定哪些記錄是重複的。這通常涉及到一個或多個欄位。
選擇保留的記錄:決定在刪除重複資料時保留哪個記錄。這可以基於某個特定欄位,例如保留具有最小或最大主鍵值的記錄。
刪除重複記錄:使用DELETE語句結合子查詢來刪除重複的記錄。
以下是一個示例,假設我們有一個名為employees的表,它包含id, name, 和email欄位。我們想要刪除name和email欄位重複的記錄,同時保留具有最小id的記錄:
sql

DELETE FROM employees e1
WHERE EXISTS (
    SELECT 1
    FROM employees e2
    WHERE e1.name = e2.name AND e1.email = e2.email
    AND e1.id > e2.id -- 保留id最小的記錄
    AND e1.name = '某個特定的名字' -- 這裡可以根據需要新增條件
);

這個查詢的工作原理如下:

WHERE EXISTS子句用於查詢存在重複記錄的情況。
e1.id > e2.id確保我們只刪除那些具有較大id的重複記錄,從而保留具有最小id的記錄。

相關文章