Lorsque vous travaillez dans Oracle, vous pouvez trouver des doublons sur certains enregistrements. Vous pouvez supprimer les lignes en double en les identifiant et en utilisant l'adresse de ligne d'alias RowID correspondante. Avant de commencer, créez une table de sauvegarde au cas où vous auriez besoin d'une référence après la suppression de l'enregistrement.
Étape
Méthode 1 sur 4: Identification des doublons
Étape 1. Identifiez les doublons
Dans cet exemple, nous identifions le doublon "Alan". Assurez-vous que les enregistrements à supprimer sont bien des doublons en entrant le code SQL ci-dessous.
Étape 2. Identifiez-vous dans la colonne intitulée « Nom »
Dans le cas où la colonne a le titre "Nom", vous devez remplacer " nom_colonne " par Nom.
Étape 3. Identifiez les autres colonnes
Si vous essayez d'identifier les doublons de différentes colonnes, par exemple l'âge d'Alan au lieu de son nom, saisissez « Age » à la place de « nom_colonne » et ainsi de suite.
sélectionnez column_name, count(column_name) dans le groupe de tables par column_name ayant count (column_name) > 1;
Méthode 2 sur 4: Suppression des doublons uniques
Étape 1. Sélectionnez « nom parmi les noms »
Après "SQL" (abréviation de Standard Query Language), entrez " select name from names ".
Étape 2. Supprimez toutes les lignes avec des noms en double
Après "SQL", saisissez " delete from names where name ='Alan';." Il est à noter que la capitalisation est ici importante pour que cette étape puisse supprimer toutes les lignes nommées "Alan". Après "SQL", entrez "commit"
Étape 3. Entrez à nouveau les lignes sans doublons
Maintenant que vous avez supprimé toutes les lignes et que vous les avez remplacées par "Alan", remplissez-en une en entrant " insert in name values ('Alan');." Après "SQL", entrez " commit " pour créer une nouvelle ligne.
Étape 4. Affichez la nouvelle liste
Après avoir terminé les étapes ci-dessus, vous pouvez vérifier qu'il n'y a plus d'enregistrements en double en entrant " select * from names ".
SQL > sélectionnez le nom parmi les noms; NOM ----------------------------- Alan Citra Tomi Alan Baris sélectionné. SQL > supprimer des noms où nom='Alan'; La ligne est supprimée. SQL > commits; \Commit terminé. SQL > insérer dans les noms values('Alan'); ligne créée. SQL > commits; Engagement terminé. SQL > sélectionnez * parmi les noms; NOM ------------------------------ Alan Citra Tomi rangées sélectionnées.
Méthode 3 sur 4: Suppression de plusieurs doublons
Étape 1. Sélectionnez le RowID que vous souhaitez supprimer
Après "SQL", entrez " select rowid, name from names;."
Étape 2. Supprimez les doublons
Après "SQL", saisissez " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);" pour supprimer les doublons.
Étape 3. Vérifiez les doublons
Après avoir terminé les étapes ci-dessus, recherchez les doublons en entrant " select rowid, name from names;" puis "s'engager".
SQL> sélectionnez rowid, nom à partir des noms; ROWID NAME ------------------ ------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rangées sélectionnées. SQL > supprimer des noms a où rowid > (sélectionner min(rowid) des noms b où b.name=a.name); lignes supprimées. SQL> sélectionnez rowid, nom à partir des noms; ROWID NAME ------------------ ------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Lignes de Tom sélectionnées. SQL > commits; Engagement terminé.
Méthode 4 sur 4: Suppression de lignes par colonnes
Étape 1. Sélectionnez la ligne
Après "SQL", saisissez " select * from names;" pour pouvoir voir la ligne.
Étape 2. Supprimez les lignes en double en identifiant leurs colonnes
Après "SQL'", entrez " supprimer des noms a où rowid > (sélectionnez min(rowid) des noms b où b.name=a.name et b.age=a.age);" pour supprimer les enregistrements en double.
Étape 3. Vérifiez les doublons
Une fois que vous avez terminé les étapes ci-dessus, entrez " select * from names; " puis " commit " pour voir si les doublons ont bien été supprimés.
SQL > sélectionnez * parmi les noms; NOM ÂGE ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 lignes sélectionnées. SQL > supprimer des noms a où rowid > (sélectionner min(rowid) des noms b où b.name=a.name et b.age=a.age); ligne supprimée. SQL > sélectionnez * parmi les noms; NOM ÂGE ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 rangs sélectionnés. SQL > commits; Engagement terminé.
Avertissement
-
Créez un tableau en double dans votre login afin qu'il puisse être utilisé comme référence de contenu lorsqu'aucune donnée n'a été supprimée (au cas où vous auriez des questions).
SQL > créer la table alan.names_backup en tant que select * from names; Tableau créé.