Se débarrasser des doublons de lignes dans une table sql oracle
Si vous utilisez la Base de données Oracle, un problème commun est de dupliquer des lignes dans les tables. Habituellement, cela se produit lorsque les contraintes uniques sont supprimés pendant le chargement. Quelle que soit la raison, vous pouvez supprimer les enregistrements en double. Des enregistrements en double ont des valeurs identiques pour toutes les colonnes (OU les colonnes qui font partie de la clé unique).
une Fois que vous avez maîtrisé la technique décrite dans cet article, je vous recommande de vérifier la Base de données de Conception de Ressources pour en savoir plus à propos de la base de données des techniques de normalisation.
Il n'y a plus d'une façon de supprimer les enregistrements en double. Supposons Table_A a les données suivantes:
Col1, Col2
& & & & & & -
101 201
102 202
103 203
102 202
104 204
101 201
regardons la première méthode.
- Sauvegarde de votre table d'origine. C'est l'étape la plus importante!
- assurez-vous que votre sauvegarde est bonne et vous pouvez les restaurer à la table d'origine si vous en avez besoin.
- Voici le code pour supprimer les enregistrements en double:
DELETE from Table_A un
WHERE ROWID != ( SELECT MAX(ROWID)
DE Table_A b
OÙ b.col1 = un.col1
ET b.col2 = un.col2 ) & nbsp
Oracle a un pseudo colonne appelée 'ROWID', qui est unique pour chaque ligne dans un tableau. De sorte que nous pouvons l'utiliser pour supprimer les enregistrements en double. Le code ci-dessus ne trouvez qu'un seul ROWID pour les enregistrements en double non. Pour les enregistrements en double, il va supprimer un enregistrement avec moins de ROWID. Si il y a plus de deux colonnes qui composent la clé unique pour un enregistrement, vous devez inclure toutes les colonnes dans la condition where. Il y a deux enregistrements en double dans l'exemple, il n'a pas d'importance qui enregistrent nous supprimer depuis toutes les colonnes ont les mêmes valeurs.
- Vérifier vos résultats et valider votre travail.
Maintenant, nous allons regarder une deuxième méthode.
- Sauvegarde de votre table d'origine. C'est toujours l'étape la plus importante!
- assurez-vous que votre sauvegarde est bonne et vous pouvez les restaurer à la table d'origine si vous en avez besoin.
- Créer une table temporaire avec des enregistrements uniques à l'aide de la clause DISTINCT.
- Supprimer tous les enregistrements de la table d'origine.
- Insérer tous les enregistrements de la table temporaire dans la table d'origine.
- Vérifier vos résultats et valider votre travail.
en Fonction de votre situation, vous pouvez choisir l'une des deux méthodes pour des résultats plus rapides. Des doublons peuvent être évitées grâce à des Index Uniques. Les Index uniques garantit que les colonnes à l'intérieur de l'index n'ont pas de valeurs en double.
Se debarrasser des doublons de lignes dans une table sql oracle
Se debarrasser des doublons de lignes dans une table sql oracle : Plusieurs milliers de conseils pour vous faciliter la vie.
Si vous utilisez la Base de donnees Oracle, un probleme commun est de dupliquer des lignes dans les tables. Habituellement, cela se produit lorsque les contraintes uniques sont supprimes pendant le chargement. Quelle que soit la raison, vous pouvez supprimer les enregistrements en double. Des enregistrements en double ont des valeurs identiques pour toutes les colonnes (OU les colonnes qui font partie de la cle unique).
une Fois que vous avez maîtrise la technique decrite dans cet article, je vous recommande de verifier la Base de donnees de Conception de Ressources pour en savoir plus a propos de la base de donnees des techniques de normalisation.
Il n'y a plus d'une façon de supprimer les enregistrements en double. Supposons Table_A a les donnees suivantes:
Col1, Col2
& & & & & & -
101 201
102 202
103 203
102 202
104 204
101 201
regardons la premiere methode.
- Sauvegarde de votre table d'origine. C'est l'etape la plus importante!
- assurez-vous que votre sauvegarde est bonne et vous pouvez les restaurer a la table d'origine si vous en avez besoin.
- Voici le code pour supprimer les enregistrements en double:
DELETE from Table_A un
WHERE ROWID != ( SELECT MAX(ROWID)
DE Table_A b
OU b.col1 = un.col1
ET b.col2 = un.col2 ) & nbsp
Oracle a un pseudo colonne appelee 'ROWID', qui est unique pour chaque ligne dans un tableau. De sorte que nous pouvons l'utiliser pour supprimer les enregistrements en double. Le code ci-dessus ne trouvez qu'un seul ROWID pour les enregistrements en double non. Pour les enregistrements en double, il va supprimer un enregistrement avec moins de ROWID. Si il y a plus de deux colonnes qui composent la cle unique pour un enregistrement, vous devez inclure toutes les colonnes dans la condition where. Il y a deux enregistrements en double dans l'exemple, il n'a pas d'importance qui enregistrent nous supprimer depuis toutes les colonnes ont les memes valeurs.
- Verifier vos resultats et valider votre travail.
Maintenant, nous allons regarder une deuxieme methode.
- Sauvegarde de votre table d'origine. C'est toujours l'etape la plus importante!
- assurez-vous que votre sauvegarde est bonne et vous pouvez les restaurer a la table d'origine si vous en avez besoin.
- Creer une table temporaire avec des enregistrements uniques a l'aide de la clause DISTINCT.
- Supprimer tous les enregistrements de la table d'origine.
- Inserer tous les enregistrements de la table temporaire dans la table d'origine.
- Verifier vos resultats et valider votre travail.
en Fonction de votre situation, vous pouvez choisir l'une des deux methodes pour des resultats plus rapides. Des doublons peuvent etre evitees grace a des Index Uniques. Les Index uniques garantit que les colonnes a l'interieur de l'index n'ont pas de valeurs en double.
Se débarrasser des doublons de lignes dans une table sql oracle
By commentfaire
Se débarrasser des doublons de lignes dans une table sql oracle : Plusieurs milliers de conseils pour vous faciliter la vie.