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
)