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: Microsoft Office kostenlos nutzen: Microsoft hasst diesen Trick! 2024, Dezember
Anonim

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

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

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.

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

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.

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

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

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" (kurz für Standard Query Language) "select name from names" 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 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

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

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.

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

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

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. 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.

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

Ü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

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 die Zeile aus

Geben Sie nach "SQL" ein " select * from names;" um die Linie sehen zu können.

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

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.

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. 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.

Empfohlen: