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

rimuovi le righe duplicate in base al valore di una colonna

È simile alla query di Gordon Linoff, ma senza la sottoquery:

DELETE t1 FROM table t1
  JOIN table t2
  ON t2.refID = t1.refID
  AND t2.ID < t1.ID

Questo utilizza un inner join per eliminare solo le righe in cui è presente un'altra riga con lo stesso ID di riferimento ma ID inferiore.

Il vantaggio di evitare una sottoquery è la possibilità di utilizzare un indice per la ricerca. Questa query dovrebbe funzionare bene con un indice a più colonne su refID + ID.