Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

remover linhas duplicadas com base em um valor de coluna


Isso é semelhante à consulta de Gordon Linoff, mas sem a subconsulta:
DELETE t1 FROM table t1
  JOIN table t2
  ON t2.refID = t1.refID
  AND t2.ID < t1.ID

Isso usa uma junção interna para excluir apenas linhas onde há outra linha com o mesmo refID, mas com ID inferior.

O benefício de evitar uma subconsulta é poder utilizar um índice para a pesquisa. Essa consulta deve funcionar bem com um índice de várias colunas em refID + ID.