1

MySQL データベースのテーブルの重複レコードを削除したい。 ここに画像の説明を入力

その画像IDは自動インクリメントですが、customer_invoice_idを一意にしたいのですが、重複したレコードを削除したいです。EG 1104 レコードを削除したいのですが、このクエリで最新のレコードである 1105 を削除します。

ALTER IGNORE TABLE table ADD UNIQUE KEY idx1(customer_invoice_id); 
4

2 に答える 2

1

LEFT JOIN を使用して削除するだけで、より高い ID を持つ重複を見つけることができます。

DELETE i1 
FROM invoices i1
LEFT JOIN invoices i2
  ON i1.customer_id = i2.customer_id 
 AND i1.customer_invoice_id = i2.customer_invoice_id
 AND i1.id < i2.id
WHERE i2.customer_invoice_id IS NOT NULL

でテストする SQLfiddle

いつものように、インターネット上のランダムな人から更新/削除を実行する前に、データをバックアップしてください:)

于 2013-08-16T10:00:52.433 に答える