Salah satu cara untuk melakukannya adalah dengan menggabungkan tabel pada subquery menggunakan LEFT JOIN
. Subquery mendapatkan ID
terendah untuk setiap UID
. Ketika sebuah record tidak memiliki kecocokan pada subquery, itu berarti bahwa record tersebut tidak memiliki record yang cocok dan dapat dihapus dengan aman.
DELETE a
FROM TableName a
LEFT JOIN
(
SELECT uid, MIN(ID) min_ID
FROM TableName
GROUP BY uid
) b ON a.uid = b.uid AND
a.ID = b.min_ID
WHERE b.uid IS NULL
Namun, jika catatan UID
dapat memiliki nama yang berbeda, maka Anda harus memasukkan name
pada group by
klausa atau hanya uid
unique yang unik dengan ID
terendah akan tetap ada.
DELETE a
FROM TableName a
LEFT JOIN
(
SELECT uid, MIN(ID) min_ID, name
FROM TableName
GROUP BY uid, name
) b ON a.uid = b.uid AND
a.ID = b.min_ID AND
a.name = b.name
WHERE b.uid IS NULL