sql >> Databasteknik >  >> RDS >> Mysql

Vad är det bästa sättet att ta bort dubbletter av värden från MySQL Table?

Först kan du försöka lägga till index i fälten ProgramName och CustID om du inte redan har dem.

De-Duping

Du kan gruppera dina poster för att identifiera duper, och när du gör det, ta det minsta ID-värdet för varje grupp. Ta sedan bara bort alla poster vars ID inte är ett av MinID:en.

In-Claus Method

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

Gå med-metod

Du kan behöva köra detta mer än en gång om det finns många medlemmar per grupp.

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

Vissa människor har prestandaproblem med In-Clausen, andra inte. Det beror mycket på dina index och så. Om den ena är för långsam, prova den andra.

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



  1. Tom databas i MySQL och PHP?

  2. Vilken tidsseriedatabas är bättre:TimescaleDB vs InfluxDB

  3. PHP - Infoga datum i mysql

  4. Hur man undviker att dividera med noll i MySQL