sql >> Databáze >  >> RDS >> Mysql

Jaký je nejlepší způsob, jak odstranit duplicitní hodnoty z tabulky MySQL?

Nejprve můžete zkusit přidat indexy do polí ProgramName a CustID, pokud je ještě nemáte.

Odstranění duplikace

Své záznamy můžete seskupit, abyste identifikovali podvodníky, a při tom si pro každou skupinu vezměte minimální hodnotu ID. Poté stačí odstranit všechny záznamy, jejichž ID není jedním z MinID.

Metoda doložky

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

Metoda připojení

Pokud je ve skupině mnoho členů, možná to budete muset spustit více než jednou.

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

Někteří lidé mají problémy s výkonem s In-Clause, někteří ne. Hodně záleží na vašich indexech a podobně. Pokud je jeden příliš pomalý, zkuste druhý.

Související:https://stackoverflow.com/a/4192849/127880



  1. PHP OOP programování MySQL

  2. Manipulace s uživatelskými daty v MySQL

  3. MySQL InnoDB:autoinkrementace neprimárního klíče

  4. Proaktivní kontroly stavu serveru SQL Server, část 4:ERRORLOG