Während Sie in Oracle arbeiten, können Sie bei einigen Datensätzen Duplikate finden. Sie können doppelte Zeilen entfernen, indem Sie sie identifizieren und die entsprechende RowID-Aliaszeilenadresse verwenden. Erstellen Sie vor dem Start eine Sicherungstabelle für den Fall, dass Sie nach dem Löschen des Datensatzes eine Referenz benötigen.
Schritt
Methode 1 von 4: Duplikate identifizieren
Schritt 1. Identifizieren Sie Duplikate
In diesem Beispiel identifizieren wir das Duplikat "Alan". Stellen Sie sicher, dass es sich bei den zu löschenden Datensätzen tatsächlich um Duplikate handelt, indem Sie unten die SQL eingeben.
Schritt 2. Identifizieren Sie aus der Spalte mit dem Titel "Name"
Falls die Spalte den Titel "Name" hat, müssen Sie " column_name " durch Name ersetzen.
Schritt 3. Identifizieren Sie die anderen Spalten
Wenn Sie versuchen, Duplikate aus verschiedenen Spalten zu identifizieren, zum Beispiel Alans Alter anstelle seines Namens, geben Sie „Alter“anstelle von „Spaltenname“ein und so weiter.
select column_name, count(column_name) aus der Tabellengruppe nach column_name mit count (column_name) > 1;
Methode 2 von 4: Entfernen einzelner Duplikate
Schritt 1. Wählen Sie "Name aus Namen"
Geben Sie nach "SQL" (kurz für Standard Query Language) "select name from names" ein.
Schritt 2. Löschen Sie alle Zeilen mit doppelten Namen
Geben Sie nach "SQL" " delete from names where name ='Alan';" ein. Es ist zu beachten, dass hier die Großschreibung wichtig ist, damit in diesem Schritt alle Zeilen mit dem Namen "Alan" gelöscht werden können. Geben Sie nach "SQL" "commit" ein
Schritt 3. Geben Sie Zeilen ohne Duplikate erneut ein
Nachdem Sie nun alle Zeilen gelöscht und durch "Alan" ersetzt haben, füllen Sie eine wieder aus, indem Sie "in Namenswerte einfügen ('Alan');" eingeben. Geben Sie nach "SQL" "commit" ein, um eine neue Zeile zu erstellen.
Schritt 4. Zeigen Sie die neue Liste an
Nachdem Sie die obigen Schritte ausgeführt haben, können Sie überprüfen, ob keine doppelten Datensätze mehr vorhanden sind, indem Sie " select * from names " eingeben.
SQL > Name aus Namen auswählen; NAME ------------------------------ Alan Citra Tomi Alan Baris ausgewählt. SQL > aus Namen löschen where name='Alan'; Die Zeile wird gelöscht. SQL > festlegt; \Commit abgeschlossen. SQL > in Namen einfügen Werte('Alan'); Zeile erstellt. SQL > festlegt; Commit abgeschlossen. SQL > wähle * aus Namen; NAME ------------------------------ Alan Citra Tomi Zeilen ausgewählt.
Methode 3 von 4: Entfernen mehrerer Duplikate
Schritt 1. Wählen Sie die RowID aus, die Sie löschen möchten
Geben Sie nach "SQL" " select rowid, name from names;" ein.
Schritt 2. Duplikate entfernen
Geben Sie nach "SQL" ein " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);" um Duplikate zu entfernen.
Schritt 3. Suchen Sie nach Duplikaten
Überprüfen Sie nach Abschluss der obigen Schritte auf Duplikate, indem Sie " select rowid, name from names;" eingeben. dann "verpflichten".
SQL > Rowid auswählen, Name aus Namen; REIHENNAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan Zeilen ausgewählt. SQL > aus Namen löschen a where rowid > (wähle min(rowid) from names b where b.name=a.name); Zeilen gelöscht. SQL > Rowid auswählen, Name aus Namen; REIHENNAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom Zeilen ausgewählt. SQL > festlegt; Commit abgeschlossen.
Methode 4 von 4: Zeilen nach Spalten löschen
Schritt 1. Wählen Sie die Zeile aus
Geben Sie nach "SQL" ein " select * from names;" um die Linie sehen zu können.
Schritt 2. Entfernen Sie doppelte Zeilen, indem Sie ihre Spalten identifizieren
Geben Sie nach "SQL'" ein " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name and b.age=a.age);" um doppelte Datensätze zu entfernen.
Schritt 3. Suchen Sie nach Duplikaten
Nachdem Sie die obigen Schritte ausgeführt haben, geben Sie " select * from names;" ein. dann "commit", um zu sehen, ob die Duplikate tatsächlich entfernt wurden.
SQL > wähle * aus Namen; NAME ALTER ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 Reihen ausgewählt. SQL > delete from names a where rowid > (wähle min(rowid) from names b where b.name=a.name and b.age=a.age); Zeile gelöscht. SQL > wähle * aus Namen; NAME ALTER ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Reihen ausgewählt. SQL > festlegt; Commit abgeschlossen.
Warnung
-
Erstellen Sie eine doppelte Tabelle in Ihrem Login, damit diese als Inhaltsreferenz verwendet werden kann, wenn keine Daten gelöscht wurden (falls Sie Fragen haben).
SQL > Tabelle alan.names_backup als select * from names erstellen; Tabelle erstellt.