Jednym ze sposobów na zrobienie tego jest dołączenie do tabeli w podzapytaniu za pomocą LEFT JOIN . Podzapytanie otrzymuje najniższy ID dla każdego UID . Gdy rekord nie pasuje do podzapytania, oznacza to po prostu, że nie ma pasującego rekordu i można go bezpiecznie usunąć.
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
Jeśli jednak rekordy UID może mieć inną nazwę, należy dołączyć name w grupie group by klauzula lub tylko unikalny uid z najniższym ID pozostanie.
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