Ich denke der Titel verrät bereits um was es in diesem Artikel geht. Ausgangspunkt ist folgende Tabelle.
CREATE TABLE `xyz` ( `a` VARCHAR(50) NOT NULL, `b` INT(10) NOT NULL DEFAULT '0', `c` DATETIME NOT NULL );
Nun soll die Spalte b einen UNIQUE Key bekommen. Das Problem ist aber, das es in dieser Spalte bereits viele Dopplungen gibt. Um sie zu finden nehme ich folgende Abfrage.
SELECT `b` FROM `xyz` WHERE `b` IN ( SELECT `b` FROM `xyz` GROUP BY `b` HAVING Count( 1 ) >1 );
Die Abfrage zeigt mir jetzt alle Einträge der Spalte b die mehr als einmal vorkommen. Jetzt kann man die Einträge entweder manuell bereinigen oder die SELECT Abfrage in eine DELETE Abfrage umbauen. Fertig.