sql >> Base de Datos >  >> RDS >> Mysql

eliminar entradas duplicadas en la tabla

Una forma de hacerlo es unir la tabla en una subconsulta usando LEFT JOIN . La subconsulta obtiene el ID más bajo para cada UID . Cuando un registro no coincide con la subconsulta, simplemente significa que no tiene un registro coincidente y se puede eliminar de forma segura.

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

Sin embargo, si los registros de UID puede tener un nombre diferente, entonces debe incluir name en el group by cláusula o solo uid único con el ID más bajo permanecerá.

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