Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql Duplicate Rows (doublon détecté à l'aide de 2 colonnes)

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
)