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

Mysql Duplicate Rows (duplicato rilevato utilizzando 2 colonne)

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

ovvero la selezione tra parentesi restituisce il primo id per ogni raggruppamento di A e B; l'eliminazione di tutti gli ID che non sono in questo set rimuoverà tutte le occorrenze di una combinazione A+B che sono "successive" alla sua prima occorrenza.

MODIFICA :questa sintassi sembra essere problematica:vedi segnalazione di bug:

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

Una possibile soluzione è eseguire questa operazione:

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