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
에만 삭제해야합니다 두 번째 복제본은 3 번째 복제본과 두 번째 복제본을 혼자 남겨 둡니다.
은 당신이 뭔가 덜 난해한하려는 경우, 당신은 아마 당신은 그냥이 문제에 (테이블에는 고유 키)를 오늘 실행되지
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
진정한 복제본은 원본의 정확한 복제본입니다. 중복 된 항목이 실제로 있습니까? 아니면 많은 데이터가 동일한 행이 있습니까? 예 : 자동 열 또는 만든 날짜와 다른 내용이 있습니까? – Zak