Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Löschen Sie doppelte Zeilen und müssen Sie eine von allen in MySQL behalten

DELETE  a
FROM    tableA a
        LEFT JOIN
        (
            SELECT MIN(ID) ID, Name, Phone
            FROM    TableA
            GROUP   BY Name, Phone
        ) b ON  a.ID = b.ID AND
                a.NAme = b.Name AND
                a.Phone = b.Phone
WHERE   b.ID IS NULL

Nachdem Sie die Löschanweisung ausgeführt haben, erzwingen Sie eine Eindeutigkeitsbeschränkung für die Spalte, damit Sie nicht erneut doppelte Datensätze einfügen können,

ALTER TABLE TableA ADD CONSTRAINT tb_uq UNIQUE (Name, Phone)