Jedním ze způsobů, jak toho dosáhnout, je připojení tabulky v dílčím dotazu pomocí LEFT JOIN . Poddotaz získá nejnižší ID pro každé UID . Když záznam v poddotazu nemá shodu, znamená to pouze, že nemá žádný odpovídající záznam a lze jej bezpečně smazat.
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
Pokud však záznamy UID může mít jiný název, pak musíte uvést name na group by klauzule nebo jinak pouze jedinečné uid s nejnižším ID zůstane.
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