IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Suppression de doublon dans une table [10gR2]


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut Suppression de doublon dans une table
    Bonjour, j'ai une table qui contient des doublons, j'aimerai supprimer les doublons en gardant le Id le plus petit, voici un exemple

    Nom : doublon.JPG
Affichages : 862
Taille : 28,5 Ko

    je veux garder seulement ID = 20,
    NB : ça c'est à titre d'exemple il y a centaine de ligne en doublon

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Bonjour,
    Tu peux utiliser une jointure dans la requête de suppression :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    delete t1
    from MaTable t1
    inner join MaTable t2 on (les critères pour trouver les doublons)
    and t1.id > t2.id

    Tatayo.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut
    Merci de me répondre,
    j'utilise TOAD 15 pour lancer le script mais on dirait qu'il indique une erreur sur FROM
    si j'insiste pour le lancer voici l'erreur
    ORA-00933: la commande SQL ne se termine pas correctement

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut
    voici une capture
    Images attachées Images attachées  

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 427
    Par défaut
    Visiblement Oracle n'aime pas les jointures avec un DELETE.
    Dans ce cas un EXIST fera l'affaire:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    delete from Matable t1
    where exists
    (
    select 1 from MaTable t2 on (les critères pour trouver les doublons) 
    and t1.id > t2.id
    )
    Ou avec un IJ:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    delete from Matable t1
    where t1.id in
    (
    select t1.id from MaTable t2 on (les critères pour trouver les doublons) 
    and t1.id > t2.id
    )

    Tatayo.

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2016
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 40
    Par défaut
    bonjour,
    j'ai essayé les deux mais il y a une erreur sur ON
    Images attachées Images attachées  

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Non mais....

    Il y a une coquille dans la requête proposée par Tatayo (remplacer ON par WHERE)

    il ne faut pas coder :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    delete from Matable T1
    where exists
         (select 1 
          from MaTable T2 
             on (les critères pour trouver les doublons) 
            and T1.id > T2.id
         )

    Mais :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    delete from Matable T1
    where exists
         (select 1 
          from MaTable T2 
          where (les critères pour trouver les doublons) 
            and T1.id > T2.id
         )

    Par exemple :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    delete from Matable T1
    where exists
         (select 1 
          from MaTable T2 
          where T2.COL_B=T1.COL_B
            and T2.COL_C=T1.COL_C
            and T1.id > T2.id
         )

    Les critères qui permettent de déterminer les doublons sont à adapter à vos besoins.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2016] requête de suppression des doublons dans une table access
    Par arrot dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/02/2020, 08h02
  2. Réponses: 8
    Dernier message: 16/08/2018, 18h50
  3. [WD15] suppression de doublons dans une table
    Par Yolak dans le forum WinDev
    Réponses: 4
    Dernier message: 02/05/2010, 20h55
  4. Suppression doublon dans une table
    Par sat83 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/09/2008, 11h37
  5. Suppression de doublons dans une table partionnée
    Par ludmillaj dans le forum Oracle
    Réponses: 10
    Dernier message: 27/12/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo