sql >> Database >  >> RDS >> Mysql

dubbele vermeldingen in tabel verwijderen

Een manier om dit te doen is door deel te nemen aan de tabel op een subquery met behulp van LEFT JOIN . De subquery krijgt de laagste ID voor elke UID . Als een record geen overeenkomst heeft in de subquery, betekent dit alleen dat deze geen overeenkomende record heeft en veilig kan worden verwijderd.

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

Als de records van UID kan een andere naam hebben, dan moet u name . opnemen op de group by clausule of anders alleen unieke uid met de laagste ID zal blijven.

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. Visual Basic voor toepassingen in Microsoft Access

  2. Maak een VIEW met parameters in SQL Server 2008

  3. SQL Server-codepagina's en -sorteringen

  4. SQL Server-systeemdatabases - MSDB-onderhoud