Mysql
 sql >> Base de données >  >> RDS >> Mysql

supprimer les entrées en double dans le tableau

Une façon de faire est de joindre la table sur une sous-requête en utilisant LEFT JOIN . La sous-requête obtient le plus petit ID pour chaque UID . Lorsqu'un enregistrement n'a pas de correspondance dans la sous-requête, cela signifie simplement qu'il n'a pas d'enregistrement correspondant et qu'il peut être supprimé en toute sécurité.

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

Cependant, si les enregistrements de UID peut avoir un nom différent, alors vous devez inclure name sur le group by clause ou bien uniquement uid unique avec le plus petit ID restera.

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