Identifier les doublons (sauf le premier)

Résolu
mathieuq Messages postés 6 Statut Membre -  
mathieuq Messages postés 6 Statut Membre -
Bonjour,

structure de ma_table:
id (clé), username, status

j'ai une table contenant des enregistrements, pour lesquels je souhaite identifier les doublons sur un champ donné. Pour les doublons identifiés, je voudrais mettre le champ status à DUPLICATE, mais pas le premier trouvé.

par exemple, je voudrais passer de ça:

id,username,status
1,aaa,
2,bbb,
3,bbb,
4,ccc,
5,aaa,

à ça:
id,username,status
1,aaa,
2,bbb,
3,bbb,DUPLICATE
4,ccc,
5,aaa,DUPLICATE

j'ai tenté cela:

update ma_table
LEFT OUTER JOIN (
SELECT MIN(id) as id, username
FROM ma_table
GROUP BY username
) as t1
ON table.id = t1.id
WHERE t1.id IS NULL
set status = 'DUPLICATE'

sans succès.

quelqu'un pourrait-il m'aider là dessus ? merci beaucoup !

1 réponse

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Essaie quelque chose de ce genre :
    UPDATE ma_table AS t1
    INNER JOIN ma_table AS t2 ON t1.username = t2.username AND t1.id > t2.id
    SET t1.status = 'DUPLICATE'
    


    Xavier
    -1
    1. mathieuq Messages postés 6 Statut Membre
       
      Réponse validée, ça fonctionne parfaitement. merci Xavier !
      0