4 Möglichkeiten zum Löschen doppelter Datensätze in Oracle

Inhaltsverzeichnis:

4 Möglichkeiten zum Löschen doppelter Datensätze in Oracle
4 Möglichkeiten zum Löschen doppelter Datensätze in Oracle

Video: 4 Möglichkeiten zum Löschen doppelter Datensätze in Oracle

Video: 4 Möglichkeiten zum Löschen doppelter Datensätze in Oracle
Video: SO sollte jeder Fotograf 📸 seine Bilder und Videos Zuhause speichern! 2024, Kann
Anonim

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

Löschen Sie doppelte Datensätze in Oracle Schritt 1
Löschen Sie doppelte Datensätze in Oracle Schritt 1

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.

Löschen Sie doppelte Datensätze in Oracle Schritt 2
Löschen Sie doppelte Datensätze in Oracle Schritt 2

Schritt 2. Identifizieren aus einer Spalte namens "Names

"Im Fall einer Spalte mit dem Namen "Names " würden Sie "column_name" durch Namen ersetzen.

Löschen Sie doppelte Datensätze in Oracle Schritt 3
Löschen Sie doppelte Datensätze in Oracle Schritt 3

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

Löschen Sie doppelte Datensätze in Oracle Schritt 4
Löschen Sie doppelte Datensätze in Oracle Schritt 4

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.

Löschen Sie doppelte Datensätze in Oracle Schritt 5
Löschen Sie doppelte Datensätze in Oracle Schritt 5

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.

Löschen Sie doppelte Datensätze in Oracle Schritt 6
Löschen Sie doppelte Datensätze in Oracle Schritt 6

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.

Löschen Sie doppelte Datensätze in Oracle Schritt 7
Löschen Sie doppelte Datensätze in Oracle Schritt 7

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

Löschen Sie doppelte Datensätze in Oracle Schritt 8
Löschen Sie doppelte Datensätze in Oracle Schritt 8

Schritt 1. Wählen Sie die RowID aus, die Sie löschen möchten

Geben Sie nach "SQL" "select rowid, name from names;" ein.

Löschen Sie doppelte Datensätze in Oracle Schritt 9
Löschen Sie doppelte Datensätze in Oracle Schritt 9

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.

Löschen Sie doppelte Datensätze in Oracle Schritt 10
Löschen Sie doppelte Datensätze in Oracle Schritt 10

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

Löschen Sie doppelte Datensätze in Oracle Schritt 11
Löschen Sie doppelte Datensätze in Oracle Schritt 11

Schritt 1. Wählen Sie Ihre Zeilen aus

Geben Sie nach "SQL" "select * from names;" ein. um deine Reihen zu sehen.

Löschen Sie doppelte Datensätze in Oracle Schritt 12
Löschen Sie doppelte Datensätze in Oracle Schritt 12

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.

Löschen Sie doppelte Datensätze in Oracle Schritt 13
Löschen Sie doppelte Datensätze in Oracle Schritt 13

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.

Empfohlen: