Comparer et supprimer

Résolu

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

4 réponses

  1. 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
    1. Modérateur

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

      0
    2. @jordane45

      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
  2. Modérateur

    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
    1. Je suis chez Free. C'est la 5.0.83

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

      0
      1. Modérateur

        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
        1. 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
        2. Modérateur
          @t671

          Tu es bien sur mysql ? Quelle version ?

          0