Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

excluir entradas duplicadas na tabela


Uma maneira de fazer isso é unindo a tabela em uma subconsulta usando LEFT JOIN . A subconsulta obtém o ID mais baixo para cada UID . Quando um registro não tem correspondência na subconsulta, significa apenas que ele não tem registro correspondente e pode ser excluído com segurança.
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

No entanto, se os registros de UID pode ter um nome diferente, então você precisa incluir name no group by cláusula ou então apenas uid exclusivo com o ID mais baixo 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