Lorsque vous travaillez dans Oracle, vous pouvez constater que certains de vos enregistrements contiennent des doublons. Vous pouvez supprimer ces lignes en double en les identifiant et en utilisant son RowID ou son adresse de ligne. Avant de commencer, vous devez créer une table de sauvegarde au cas où vous auriez besoin de les référencer après avoir supprimé des enregistrements.
Pas
Méthode 1 sur 4: Identification de votre doublon
Étape 1. Identifiez le doublon
Dans ce cas, identifiez l'exemple de doublon, "Alan". Assurez-vous que les enregistrements que vous essayez de supprimer sont en fait des doublons en entrant le code SQL ci-dessous.
Étape 2. Identification à partir d'une colonne nommée "Noms
Dans l'instance d'une colonne nommée « Noms », vous remplaceriez « nom_colonne » par Noms.
Étape 3. Identification à partir d'autres colonnes
Si vous essayiez d'identifier le doublon par une colonne différente, par exemple l'âge d'Alan plutôt que son nom, vous saisiriez « Âges » à 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 d'un seul doublon
Étape 1. Sélectionnez "nom à partir des noms
"Après "SQL", qui signifie Standard Query Language, entrez "select name from names".
Étape 2. Supprimez toutes les lignes avec le nom en double
Après "SQL, " entrez "supprimer des noms où nom='Alan';." Notez que la majuscule est importante ici, donc cela supprimera toutes les lignes nommées "Alan". Après "SQL", saisissez "commit".
Étape 3. Louez la rangée sans doublon
Maintenant que vous avez supprimé toutes les lignes avec le nom d'exemple « Alan », vous pouvez en insérer une en entrant « insérer dans les valeurs de nom ('Alan');." Après "SQL", saisissez "commit" pour créer votre nouvelle ligne.
Étape 4. Consultez votre nouvelle liste
Une fois que vous avez terminé les étapes ci-dessus, vous pouvez vérifier que vous n'avez plus d'enregistrements en double en entrant "select * from names".
SQL > sélectionnez le nom parmi les noms; NOM ----------------------------- Alan Carrie Tom Alan lignes sélectionnées. SQL > supprimer des noms où nom='Alan'; lignes supprimées. SQL > valider; Engagement terminé. SQL > insérer dans les valeurs des noms ('Alan'); ligne créée. SQL > valider; Engagement terminé. SQL > sélectionnez * parmi les noms; NOM ------------------------------ Alan Carrie Tom lignes 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 le doublon
Après "SQL, " entrez " supprimer des noms a où rowid > (sélectionnez min(rowid) des noms b où b.name=a.name);" pour supprimer les enregistrements en double.
Étape 3. Vérifiez les doublons
Une fois que vous avez terminé ce qui précède, les commandes vérifient si vous avez toujours des enregistrements en double 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 > valider; Engagement terminé.
Méthode 4 sur 4: Suppression de lignes avec des colonnes
Étape 1. Sélectionnez vos lignes
Après « SQL, » entrez « sélectionnez * parmi les noms; » pour voir vos lignes.
Étape 2. Supprimez les lignes en double en identifiant leur colonne
Après "SQL'", entrez "delete from names a where rowid > (select min(rowid) from names b where 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 « valider » afin de vérifier que vous avez bien supprimé les enregistrements en double.
SQL > sélectionnez * parmi les noms; NOM ÂGE ------------------------------ ---------- Alan 50 Carrie 51 Tom 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 Carrie 51 Tom 52 lignes sélectionnées. SQL > valider; Engagement terminé.
Mises en garde
-
Créez une table de sauvegarde dans votre propre connexion que vous pouvez utiliser pour afficher ce qui s'y trouvait avant toute suppression (au cas où vous auriez des questions).
SQL > créer la table alan.names_backup en tant que select * from names; Tableau créé.