delete from myTable
where id not in
(select min(id)
from myTable
group by A, B)
c'est-à-dire que la sélection entre parenthèses renvoie le premier identifiant pour chaque groupe de A et B ; la suppression de tous les identifiants qui ne sont pas dans cet ensemble supprimera toutes les occurrences d'une combinaison A-plus-B qui sont "postérieures" à sa première occurrence.
MODIFIER :cette syntaxe semble poser problème :voir rapport de bug :
http://bugs.mysql.com/bug.php?id=5037
Une solution de contournement possible consiste à procéder comme suit :
delete from myTable
where id not in
(
select minid from
(select min(id) as minid from myTable group by A, B) as newtable
)