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

Filas duplicadas de Mysql (duplicado detectado usando 2 columnas)

delete from myTable 
where id not in
(select min(id)
from myTable
group by A, B)

es decir, la selección entre paréntesis devuelve la primera identificación para cada agrupación de A y B; eliminar todos los ID que no están en este conjunto eliminará todas las apariciones de una combinación A-más-B que son "posteriores" a su primera aparición.

EDITAR :esta sintaxis parece ser problemática:consulte el informe de error:

http://bugs.mysql.com/bug.php?id=5037

Una posible solución es hacer esto:

delete from myTable 
where id not in
(
      select minid from 
      (select min(id) as minid from myTable group by A, B) as newtable
)