Comparer et supprimer

Résolu/Fermé
t671 Messages postés 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024 - 13 août 2022 à 19:01
t671 Messages postés 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024 - 20 août 2022 à 16:32

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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
Modifié le 13 août 2022 à 21:10

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 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024 11
Modifié le 19 août 2022 à 17:59

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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689 > t671 Messages postés 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024
19 août 2022 à 18:48

Tu es bien sur mysql ? Quelle version ?

0
t671 Messages postés 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024 11
19 août 2022 à 19:01

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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
19 août 2022 à 19:26

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 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024 11
20 août 2022 à 10:31

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 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
20 août 2022 à 11:56

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

0
t671 Messages postés 1423 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 16 juillet 2024 11 > jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024
20 août 2022 à 16:32

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