sql >> Base de Datos >  >> RDS >> Mysql

eliminar filas duplicadas en función del valor de una columna

Esto es similar a la consulta de Gordon Linoff, pero sin la subconsulta:

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

Esto usa una combinación interna para eliminar solo las filas donde hay otra fila con el mismo refID pero un ID más bajo.

El beneficio de evitar una subconsulta es poder utilizar un índice para la búsqueda. Esta consulta debería funcionar bien con un índice de varias columnas en refID + ID.