背景
登録時の重複チェックがうまく効いてなかったのか、同じ内容のレコードが複数登録されてしまっていて、
重複しているレコードのうち登録が一番古いレコードだけを残したかった際に実行したSQL。
※ここでは「最も古いレコード = idが一番若いレコード」として書いてます。
実行したSQL
DELETE FROM `[table_name]` WHERE id NOT IN (SELECT min_id FROM (SELECT min(table1.id) AS min_id FROM `[table_name]` AS table1 GROUP BY table1.[column]) AS table2);
[table_name]に対象のテーブル名、[column]に重複が確認できるカラム名を入れて実行すれば、idが一番若いレコード以外のレコードが削除されます。
SELECT文の中の「min(table1.id)」の箇所を変えてあげれば、id以外のカラムでもできます。
そもそもそんなレコードが作られる際にちゃんと対策しとけよと思いますが、何かしらの要因で重複してしまった際の対応策として。。。