Postgresqlで重複レコードを削除する
DISTINCT句によって検索結果がユニークになることを利用し、結果を別テーブルにコピーして戻す。
※制約(プライマリキー制約、 非NULL制約など)やデフォルト値などの設定は、自動的にコピーされないので適宜再設定する。
1 2 3 4 5 6 7 8 | --重複レコード除去(一時テーブル) CREATE TABLE tmp_table AS SELECT DISTINCT * FROM target_table; --元テーブルバックアップ CREATE TABLE bk_table AS SELECT * FROM target_table; --元テーブル削除 DROP TABLE target_table; --一時テーブルを元テーブルの名称にリネーム ALTER TABLE tmp_table RENAME TO target_table; |
古い記事に失礼します。
これだと、レコードは整理できますがModifiers等の元のテーブルにあった設定は消えてしまいますね。
検索結果の上の方に出てきたので、他の方が事故にならないようコメントさせていただきます。
仰る通り、制約などについては自動でコピーされませんね。
補足をしました。