Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jaki jest najlepszy sposób na usunięcie zduplikowanych wartości z tabeli MySQL?

Po pierwsze, możesz spróbować dodać indeksy do pól ProgramName i CustID, jeśli jeszcze ich nie masz.

Usuwanie duplikatów

Możesz grupować swoje rekordy, aby zidentyfikować duplikatów, a gdy to robisz, pobierz wartość minimalnego identyfikatora dla każdej grupy. Następnie po prostu usuń wszystkie rekordy, których identyfikator nie jest jednym z MiniID.

Metoda klauzuli

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

Metoda łączenia

Być może będziesz musiał uruchomić to więcej niż raz, jeśli w grupie jest wielu członków.

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

Niektórzy ludzie mają problemy z wydajnością klauzuli, inni nie. To zależy w dużej mierze od twoich indeksów i tak dalej. Jeśli jedno jest zbyt wolne, wypróbuj drugie.

Powiązane:https://stackoverflow.com/a/4192849/127880



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj wiele wyników mysql według wartości jednej kolumny

  2. Jak dodać indeksy do tabel MySQL?

  3. Losowe identyfikatory w sqlalchemy (pylony)

  4. Problem z rozmiarem wysyłania w PHP i MySql

  5. Jak używać klauzuli WITH w MySQL?