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