Maintenance

消除數據清洗中的重複記錄

  • October 15, 2014

我有一個數據庫,裡面有很多人的簡單資訊,比如名字、姓氏、電子郵件、位置……。我需要消除重複記錄。正如我所搜尋的那樣,該過程稱為“數據清理中的重複消除”。有誰知道一個好的開源工具來做到這一點?

使用 T-SQL & PL/SQL,您可以使用 ROW_NUMBER() OVER (PARTITION BY) 來查找和刪除表中的重複記錄。

請參閱一些最佳範例從 SQL Server 中的表中刪除重複項 以及如何刪除重複行?以及Oracle ‘Partition By’ 和 ‘Row_Number’ 關鍵字

對於 PostgreSQL,您可以使用“簡單”的 SQL 語句來執行此操作,該語句可能適用於其他 SQL 數據庫,幾乎不需要調整:

http://wiki.postgresql.org/wiki/Deleting_duplicates

請注意,它會刪除所有具有更高 ID 的條目,最好知道…

DELETE FROM tablename
WHERE id IN (SELECT id
 FROM (SELECT id,
        row_number() over (partition BY column1, column2, column3 ORDER BY id) AS rnum
        FROM tablename) t
 WHERE t.rnum > 1);

引用自:https://dba.stackexchange.com/questions/43181