Comparer et supprimer

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Je souhaiterais savoir comment je pourrais faire pour comparer deux tables (A et B) d'une bd, et supprimer les doublons dans la table A. En prenant comme comparateur les champs nom, prénom, et date-naissance.

Merci

A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

Une requête DELETE, avec, dans le WHERE, une sous-requête  (utilisant éventuellement un CONCAT )sur l'autre table avec les champs désirés...

Un truc du genre

DELETE FROM tableA
WHERE CONCAT (nom,prenom,datenaiss) IN (
  SELECT CONCAT (nom,prenom,datenaiss) 
  FROM tableB
)

0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 

Bonjour jordane45.

Je réponds un peu tard, mais j'étais absent.

Si j'éceis :

DELETE FROM genfamille.malfoidaquin
WHERE CONCAT (nom,prenom,datenaiss) IN (
  SELECT CONCAT (nom,prenom,datenaiss) 
  FROM genfamille.daquin
)

j'ai comme erreur :

#1305 - FUNCTION genfamille.CONCAT does not exist
 

Et si je tente :

DELETE FROM malfoidaquin
WHERE CONCAT (nom,prenom,datenaiss) IN (
  SELECT CONCAT (nom,prenom,datenaiss) 
  FROM daquin
)

j'ai comme erreur :

#1305 - FUNCTION genfamille CONCAT does not exist

C'est comme si le CONCAT n'était pas reconnu !!!!!

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention  
 

Tu es bien sur mysql ? Quelle version ?

0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 

Je suis chez Free. C'est la 5.0.83

Mais sinon, il y a d'autre moyen de faire ?

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Essaye en ne mettant pas d'espace entre le nom de la fonction et la parenthèse ouvrante  CONCAT(  et non pas CONCAT (

Sinon, essaye (là aussi sans espaces...) la fonction CONCAT_WS (je te laisse chercher la syntaxe pour l'utiliser)

0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 

Effectivement, si j'enlève l'espace entre CONCAT et (, le script fonctionne. Il m'a supprimé près de 300 enregistrements. Par contre, après vérification, de nombreux enregistrements de la table daquin sont toujours dans la table malfoidaquin. Et je ne sais pas ce qui a été supprimé. Heureusement que j'avais des sauvegardes des tables avant la manip ......!!!!

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Remplace le delete par un select *. Et regarde ce que ça te dit..

0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

Le plus simple est que je compare les enregistrements un par un ! J'en ai juste un peu plus de 3000, mais ca ira plus vite ...........

0

Discussions similaires