sql >> Database teknologi >  >> RDS >> Mysql

slette duplikerede rækker og skal beholde en fra dem alle i mysql

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

Når du har udført delete-sætningen, skal du håndhæve en unik begrænsning på kolonnen, så du ikke kan indsætte duplikerede poster igen,

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


  1. Ampersand (&) operator i en SQL Server WHERE-klausul

  2. Hvordan forsinker jeg kolonner i MySQL?

  3. Hvordan aktiverer jeg MySQL langsomme forespørgselslog?

  4. PHP og MYSQL viser 1 post med flere navne