Wenn Sie in Oracle arbeiten, stellen Sie möglicherweise fest, dass einige Ihrer Datensätze Duplikate aufweisen. Sie können diese doppelten Zeilen löschen, indem Sie sie identifizieren und ihre RowID oder Zeilenadresse verwenden. Bevor Sie beginnen, sollten Sie eine Sicherungstabelle erstellen, falls Sie nach dem Löschen von Datensätzen darauf verweisen müssen.
Schritte
Methode 1 von 4: Identifizieren Ihres Duplikats
Schritt 1. Identifizieren Sie das Duplikat
Identifizieren Sie in diesem Fall das Beispielduplikat "Alan". Stellen Sie sicher, dass die Datensätze, die Sie löschen möchten, tatsächlich Duplikate sind, indem Sie unten die SQL eingeben.
Schritt 2. Identifizieren aus einer Spalte namens "Names
"Im Fall einer Spalte mit dem Namen "Names " würden Sie "column_name" durch Namen ersetzen.
Schritt 3. Identifizieren aus anderen Spalten
Wenn Sie versuchen, das Duplikat anhand einer anderen Spalte zu identifizieren, zum Beispiel das Alter von Alan und nicht seinen Namen, würden Sie "Alter" anstelle von "Spaltenname" eingeben und so weiter.
select column_name, count(column_name) aus der Tabellengruppe nach column_name mit count (column_name) > 1;
Methode 2 von 4: Löschen eines einzelnen Duplikats
Schritt 1. Wählen Sie "Name aus Namen
"Geben Sie nach "SQL", das für Standard Query Language steht, "Namen aus Namen auswählen" ein.
Schritt 2. Löschen Sie alle Zeilen mit dem doppelten Namen
Geben Sie nach "SQL" "delete from names where name='Alan';" ein. Beachten Sie, dass hier die Groß-/Kleinschreibung wichtig ist. Dadurch werden alle Zeilen mit dem Namen "Alan" gelöscht. Geben Sie nach "SQL" "commit" ein.
Schritt 3. Mieten Sie die Zeile ohne Duplikat
Nachdem Sie nun alle Zeilen mit dem Beispielnamen "Alan" gelöscht haben, können Sie eine wieder einfügen, indem Sie "insert into name values ('Alan');" eingeben. Geben Sie nach "SQL" "commit" ein, um Ihre neue Zeile zu erstellen.
Schritt 4. Sehen Sie sich Ihre neue Liste an
Nachdem Sie die obigen Schritte ausgeführt haben, können Sie überprüfen, ob Sie keine doppelten Datensätze mehr haben, indem Sie "select * from names" eingeben.
SQL > Name aus Namen auswählen; NAME ------------------------------ Alan Carrie Tom Alan Zeilen ausgewählt. SQL > aus Namen löschen where name='Alan'; Zeilen gelöscht. SQL > festschreiben; Commit abgeschlossen. SQL > in Namenswerte einfügen ('Alan'); Zeile erstellt. SQL > festschreiben; Commit abgeschlossen. SQL > wähle * aus Namen; NAME ------------------------------ Alan Carrie Tom Zeilen ausgewählt.
Methode 3 von 4: Löschen 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. Löschen Sie das Duplikat
Geben Sie nach "SQL" "delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);" um doppelte Datensätze zu löschen.
Schritt 3. Suchen Sie nach Duplikaten
Nachdem Sie die obigen Schritte ausgeführt haben, überprüfen die Befehle, ob Sie noch doppelte Datensätze haben, indem Sie "select rowid, name from names;" eingeben. und 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 > festschreiben; Commit abgeschlossen.
Methode 4 von 4: Zeilen mit Spalten löschen
Schritt 1. Wählen Sie Ihre Zeilen aus
Geben Sie nach "SQL" "select * from names;" ein. um deine Reihen zu sehen.
Schritt 2. Löschen Sie doppelte Zeilen, indem Sie ihre Spalte 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 die doppelten Datensätze zu löschen.
Schritt 3. Suchen Sie nach Duplikaten
Nachdem Sie die obigen Schritte ausgeführt haben, geben Sie "select * from names;" ein. und dann "commit", um zu überprüfen, ob Sie die doppelten Datensätze erfolgreich gelöscht haben.
SQL > wähle * aus Namen; NAME ALTER ------------------------------ ---------- Alan 50 Carrie 51 Tom 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 Carrie 51 Tom 52 Zeilen ausgewählt. SQL > festschreiben; Commit abgeschlossen.
Warnungen
-
Erstellen Sie in Ihrer eigenen Anmeldung eine Sicherungstabelle, mit der Sie anzeigen können, was vor dem Löschen vorhanden war (falls es Fragen gibt).
SQL > Tabelle alan.names_backup als select * from names erstellen; Tabelle erstellt.