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

slet duplikerede poster i tabellen

En måde at gøre dette på er ved at forbinde tabellen på en underforespørgsel ved hjælp af LEFT JOIN . Underforespørgslen får det laveste ID for hver UID . Når en post ikke har match på underforespørgslen, betyder det bare, at den ikke har nogen matchende post og sikkert kan slettes.

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

Men hvis registreringerne af UID kan have et andet navn, så skal du inkludere namegroup by klausul eller ellers kun unik uid med det laveste ID forbliver.

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


  1. Importer CSV til MySQL

  2. Underligt alle steder

  3. Ret forespørgsel for at få det aktuelle antal forbindelser i en PostgreSQL DB

  4. syntaksfejl på DECLARE CURSOR FOR