bonjour,
j'ai une table de contact avec un champ nom qui comporte plusieurs fois la meme valeur.
BALKANI BALKANI Eric
ANDRE ANDRE Frédéric
Connaissez-vous une requête SQL qui permette de supprimer le doublon dans cette chaine de caractère.
Version imprimable
bonjour,
j'ai une table de contact avec un champ nom qui comporte plusieurs fois la meme valeur.
BALKANI BALKANI Eric
ANDRE ANDRE Frédéric
Connaissez-vous une requête SQL qui permette de supprimer le doublon dans cette chaine de caractère.
Essaie déjà de les détecter avec cette requête :
S'il n'y a pas de faux doublon, tu pourras utiliser la condition WHERE dans une requête UPDATE.Code:
1
2
3 SELECT nom FROM la_table WHERE LEFT(nom, LOCATE(' ', nom)) = SUBSTRING(nom FROM LOCATE(' ', nom) + 1 FOR LOCATE(' ', nom))
Est-il normal que sur 22800 enregistrement, il m'en sorte 21700, j'ai l'impression qu'il me sors tout sauf les doublons.
Examine le résultat et vois s'il est cohérent. On ne peut pas le dire à ta place.
Éventuellement, il faut peut-être ajouter 1 au LOCATE. Regarde la doc de MySQL pour savoir exactement le résultat retourné.
Et puis fais des tests avant de faire la requête UPDATE, n'oublie pas de sauvegarder la BDD avant l'UPDATE car ce genre de truc peut complètement foirer les données de la table.
Pas forcement mieux, mais je la trouve plus simple à comprendre :
Code:
1
2
3 SELECT nom FROM la_table WHERE nom LIKE CONCAT(LEFT(nom, LOCATE(' ', nom)), LEFT(nom, LOCATE(' ', nom)),'%')
Il manque l'espace séparant les deux noms dans ton CONCAT !