DELETE t2 FROM table1 t2
INNER JOIN table1 t1 ON
(t1.somefield = t2.somefield
AND t1.otherfield = t2.otherfield /*add more fields if need be */
AND t2.id > t1.id)
LEFT JOIN table1 t3 ON
(t1.somefield = t3.somefield
AND t1.otherfield = t3.otherfield /*add more fields if need be */
AND t3.id > t2.id)
WHERE (t3.id IS NULL)
ORDER BY t2.id ASC
これはのみ削除してください第2回目は複製し、第3回目以降は重複を避けてください。
あなたはあまり難解な何かをしたい、とあなたはtimestamp列を持っている、おそらくあなたは
DELETE t2 FROM table1 t2
INNER JOIN table1 t1 ON
(t1.somefield = t2.somefield
AND t1.otherfield = t2.otherfield /*add more fields if need be */
AND t2.`timestamp` > t1.`timestamp`)
WHERE (1=1) /*In some mode(s) MySQL requires a where clause with delete*/
ORDER BY t2.id ASC
テーブル定義を投稿してください。 –
これらは正確に重複しているのですか、またはそこに固有の鍵がありますか? – Jason
真の複製物は、元の複製物とまったく同じです。本当に重複しているのですか、またはデータの多くが同じですが、auto inc列や作成された日付のようなものが異なる行がありますか? – Zak