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

Qual è il modo migliore per eliminare i valori duplicati da MySQL Table?

Innanzitutto, potresti provare ad aggiungere indici ai campi ProgramName e CustID se non li hai già.

Deduplicazione

Puoi raggruppare i tuoi record per identificare i duplicati e, mentre lo fai, prendi il valore ID minimo per ciascun gruppo. Quindi, elimina tutti i record il cui ID non è uno dei MinID.

Metodo nella clausola

delete from
 ProgramsList
where
 id not in 
    (select min(id) as MinID
      from ProgramsList
      group by ProgramName, CustID) 

Metodo di adesione

Potrebbe essere necessario eseguirlo più di una volta, se ci sono molti membri per gruppo.

DELETE P
FROM ProgramsList as P
INNER JOIN 
    (select count(*) as Count, max(id) as MaxID
     from ProgramsList
     group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2

Alcune persone hanno problemi di prestazioni con la clausola In-Clause, altre no. Dipende molto dai tuoi indici e simili. Se uno è troppo lento, prova l'altro.

Correlati:https://stackoverflow.com/a/4192849/127880