Identifier les doublons (sauf le premier)

Résolu/Fermé
mathieuq Messages postés 6 Date d'inscription mardi 21 mai 2013 Statut Membre Dernière intervention 5 septembre 2014 - 5 sept. 2014 à 10:28
mathieuq Messages postés 6 Date d'inscription mardi 21 mai 2013 Statut Membre Dernière intervention 5 septembre 2014 - 5 sept. 2014 à 15:05
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 !
A voir également:

1 réponse

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 sept. 2014 à 14:48
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
mathieuq Messages postés 6 Date d'inscription mardi 21 mai 2013 Statut Membre Dernière intervention 5 septembre 2014
5 sept. 2014 à 15:05
Réponse validée, ça fonctionne parfaitement. merci Xavier !
0