調べていたら神SQLを見つけたのでメモ。
サブクエリを用いる。
delete from `[table_name]` where id not in (select min_id from (select min(t1.id) as min_id from `[table_name]` as t1 group by t1.[duplicate_col]) as t2);
table_nameに対象のテーブル名を。
duplicate_colに重複レコードが確認できるカラム名を。
これで重複していた行は古いものを1件のみ残し、すべて削除される。
神すぎる。