重複レコードをMySQLデータベースから一括削除

今後使うこともありそうなので備忘的に残しとく。


まず一時的にテーブル「temp_table」を作成。
テーブル「main_table」の中身をコピーするんですが、ポイントは重複に関係するカラムをグループ化すること。

CREATE TABLE temp_table as SELECT * FROM main_table GROUP BY column_1, column_2;

テーブル「temp_table」で重複レコードが除去されているのを確認して、下記SQL文を実行。

DROP TABLE main_table;
ALTER TABLE temp_table RENAME TO main_table;

main_tableをdropするんで、temp_tableの中身をよく確認すること。利用するときは自己責任で。



追記

ちなみにこの方法だとPRIMARY KEYやらAUTO_INCREMENTの設定が引き継がれない。
下記SQL文を実行すれば問題ない。コマンドの微調整は各自で。

alter table main_table modify user_id int primary key auto_increment