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
này chỉ nên xóa bản sao thứ 2 và để lại bản sao thứ 3 và xa hơn một mình.
Nếu bạn muốn một cái gì đó ít bí truyền, và bạn có một cột dấu thời gian, có lẽ bạn muốn làm
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
vui lòng đăng định nghĩa bảng của bạn. –
Chúng có trùng lặp chính xác không hoặc bạn có khóa duy nhất ở đâu đó trong đó không? – Jason
Bản sao thực sự là bản sao chính xác của bản gốc. Bạn có thực sự có bản sao, hoặc bạn có hàng mà rất nhiều dữ liệu giống hệt nhau, nhưng một cái gì đó giống như cột inc tự động hoặc ngày tạo khác nhau? – Zak