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 Firebird Discussion :

Supprimer des doublons dans une table


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 99
    Points
    99
    Par défaut Supprimer des doublons dans une table
    Bonjour,

    Je suis confronté à la problématique suivante :

    j'ai une table dans laquelle des lignes d'enregistrement sont en doublons(hormis la clé primaire bien évidemment).

    En gros, pour une ligne donnée, il est possible que j'en ai une autre strictement identique champ par champ.

    J'ai un besoin crucial de pouvoir supprimer ces lignes (en en gardant quand même une). Je n'ai aucun accès à la base autre qu'une requête SQL (ce qui est dommage car je vois très bien l'algo qui me permettrait de faire ça si je pouvias exécuter un script).

    Du coup, je nage complètement sur ce sujet (et oui, je sais que l'appli qui entraîne ce genre de souci au départ est mal conçue, mais ce n'est pas moi qui l'ai crée).

    Pour l'instant, j'avais pensé à créer une table temporaire dans laquelle je stocke le résultat d'une requête avec distinct, puis vider la table d'origine et y remettre les bons enregistrements mais malheureusement je n'ai pas les droits pour créer une table temporaire.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Bonjour avec le code suivant tu ne garderas que les dernières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    delete from t1 
    where exists (select * from t1 as t2 
                                 where t1.pkey < t2.pkey
                                   and t1.champs1 = t2.champs1
                                   and t1.champs2 = t2.champs2
                                   and t1........3     = t2..........3 
                                   and ......................)
    attention neanmoins :
    1. remplacer delete par select * ne serai pas une mauvaise idée avant de vraiment faire le delete
    2. A la gestion des champs contenant la valeur NULL. (le query doit etre adapter en fonction - utilisation possible de NOT DISTINCT plutot que = a partir de firebird 2 )

    Didier V.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par didvig Voir le message
    Bonjour avec le code suivant tu ne garderas que les dernières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    delete from t1 
    where exists (select * from t1 as t2 
                                 where t1.pkey < t2.pkey
                                   and t1.champs1 = t2.champs1
                                   and t1.champs2 = t2.champs2
                                   and t1........3     = t2..........3 
                                   and ......................)
    attention neanmoins :
    1. remplacer delete par select * ne serai pas une mauvaise idée avant de vraiment faire le delete
    2. A la gestion des champs contenant la valeur NULL. (le query doit etre adapter en fonction - utilisation possible de NOT DISTINCT plutot que = a partir de firebird 2 )

    Didier V.
    Merci, ça a très bien marché.

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

Discussions similaires

  1. supprimer les doublons dans une table
    Par mavean dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2019, 13h26
  2. Supprimer des doublons dans une table
    Par arngrimur dans le forum Langage SQL
    Réponses: 9
    Dernier message: 26/10/2011, 13h59
  3. Requête pour supprimer des doublons dans une table
    Par nomade333 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2008, 12h48
  4. [Collections]Supprimer des doublons dans une ArrayList
    Par emie31 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/12/2005, 15h15
  5. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27

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