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

Linhas Duplicadas do Mysql (Duplicado detectado usando 2 colunas)

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

ou seja, o select entre colchetes retorna o primeiro id para cada agrupamento de A e B; excluir todos os ids que não estão neste conjunto removerá todas as ocorrências de uma combinação A-mais-B que são "subseqüentes" à sua primeira ocorrência.

EDITAR :esta sintaxe parece ser problemática:veja o relatório de bug:

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

Uma possível solução é fazer isso:
delete from myTable 
where id not in
(
      select minid from 
      (select min(id) as minid from myTable group by A, B) as newtable
)