1. ホーム
  2. sql

[解決済み] 重複したエントリーを削除する方法を教えてください。

2023-02-25 19:35:28

質問

既存のテーブルに一意制約を追加する必要があります。そのテーブルにはすでに数百万の行があり、多くの行が私が追加する必要のある一意制約に違反していることを除けば、これは良いことです。

違反行を削除するための最速の方法は何ですか?重複を発見して削除する SQL 文がありますが、実行に時間がかかります。この問題を解決する別の方法はありますか? テーブルをバックアップし、制約を追加した後にリストアするとか?

どのように解決するのですか?

例えば、以下のような方法があります。

CREATE TABLE tmp ...
INSERT INTO tmp SELECT DISTINCT * FROM t;
DROP TABLE t;
ALTER TABLE tmp RENAME TO t;