Doppelte Zeilen in einer Oracle-Sql-Tabelle loswerden


Wenn Sie Oracle-Datenbank verwenden, ist ein häufiges Problem doppelte Zeilen in Tabellen. Dies geschieht in der Regel wenn unique-Einschränkungen beim Laden entfernt werden. Was immer der Grund sein mag, können Sie doppelte Datensätze entfernen. Doppelte Datensätze haben identische Werte für alle Spalten (OR-Spalten, die Teil des eindeutigen Schlüssel sind).

Sobald Sie die in diesem Artikel beschriebenen Technik beherrschen, empfehle ich, dass Sie die Ressource für Datenbank-Design erfahren Sie mehr über gute Datenbank Normalisierung Techniken Auschecken.

Es gibt mehr als eine Möglichkeit zum Löschen von Duplikaten. Nehmen wir an, dass Table_A hat folgenden Daten:

Spalte1 Spalte2
------ -------
101 201
102 202
103 203
102 202
104 204
101 201

Schauen wir uns die erste Methode.

  1. Backup der Originaltabelle. Dies ist der wichtigste Schritt!
  2. Stellen Sie sicher Ihre Sicherung ist gut und Sie können Originaltabelle wiederherstellen, falls erforderlich.
  3. Hier ist der Code zum Löschen von Duplikaten:

    Löschen von Table_A ein
    WO ROWID! = (SELECT MAX(ROWID)
    VON Table_A b
    WO b.col1 = a.col1
    & B.col2 = a.col2);

    Oracle hat eine Pseudo-Spalte namens 'ROWID', das für jede Zeile in einer Tabelle eindeutig ist. Also, wir können diese verwenden, um doppelte Datensätze zu löschen. Der obige Code wird nur ein ROWID für nicht doppelten Datensätze finden. Für doppelte Datensätze werde es einen Datensatz mit niedrigeren ROWID löschen. Wenn es mehr als zwei Spalten, die eindeutigen Schlüssel für einen Datensatz bilden, dann Sie alle diejenigen Spalten einschließen sollte in dem Zustand. Im Beispiel gibt es zwei doppelte Datensätze; Es spielt keine Rolle, welchen Datensatz wir löschen da alle Spalten dieselben Werte aufweisen.

  4. Überprüfen Sie Ihre Ergebnisse und begehen Sie Ihre Arbeit zu.

Jetzt schauen wir uns eine zweite Methode.

  1. Backup der Originaltabelle. Dies ist immer noch der wichtigste Schritt!
  2. Stellen Sie sicher Ihre Sicherung ist gut und Sie können Originaltabelle wiederherstellen, falls erforderlich.
  3. Erstellen Sie eine temporäre Tabelle mit eindeutige Datensätze mithilfe von DISTINCT-Klausel.
  4. Löschen Sie alle Datensätze aus der Originaltabelle.
  5. Legen Sie alle Datensätze aus temporären Tabelle, in der Originaltabelle.
  6. Überprüfen Sie Ihre Ergebnisse und begehen Sie Ihre Arbeit zu.

Je nach Ihrer Situation können Sie eine der beiden Methoden für schnellere Ergebnisse. Doppelte Datensätze können mit eindeutigen Indizes verhindert werden. Eindeutige Indizes garantiert Spalten innerhalb des Indexes keine doppelten Werte aufweisen.









Doppelte Zeilen in einer Oracle-Sql-Tabelle loswerden


Doppelte Zeilen in einer Oracle-Sql-Tabelle loswerden : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Wenn Sie Oracle-Datenbank verwenden, ist ein häufiges Problem doppelte Zeilen in Tabellen. Dies geschieht in der Regel wenn unique-Einschränkungen beim Laden entfernt werden. Was immer der Grund sein mag, können Sie doppelte Datensätze entfernen. Doppelte Datensätze haben identische Werte für alle Spalten (OR-Spalten, die Teil des eindeutigen Schlüssel sind).

Sobald Sie die in diesem Artikel beschriebenen Technik beherrschen, empfehle ich, dass Sie die Ressource für Datenbank-Design erfahren Sie mehr über gute Datenbank Normalisierung Techniken Auschecken.

Es gibt mehr als eine Möglichkeit zum Löschen von Duplikaten. Nehmen wir an, dass Table_A hat folgenden Daten:

Spalte1 Spalte2
------ -------
101 201
102 202
103 203
102 202
104 204
101 201

Schauen wir uns die erste Methode.

  1. Backup der Originaltabelle. Dies ist der wichtigste Schritt!
  2. Stellen Sie sicher Ihre Sicherung ist gut und Sie können Originaltabelle wiederherstellen, falls erforderlich.
  3. Hier ist der Code zum Löschen von Duplikaten:

    Löschen von Table_A ein
    WO ROWID! = (SELECT MAX(ROWID)
    VON Table_A b
    WO b.col1 = a.col1
    & B.col2 = a.col2);

    Oracle hat eine Pseudo-Spalte namens 'ROWID', das für jede Zeile in einer Tabelle eindeutig ist. Also, wir können diese verwenden, um doppelte Datensätze zu löschen. Der obige Code wird nur ein ROWID für nicht doppelten Datensätze finden. Für doppelte Datensätze werde es einen Datensatz mit niedrigeren ROWID löschen. Wenn es mehr als zwei Spalten, die eindeutigen Schlüssel für einen Datensatz bilden, dann Sie alle diejenigen Spalten einschließen sollte in dem Zustand. Im Beispiel gibt es zwei doppelte Datensätze; Es spielt keine Rolle, welchen Datensatz wir löschen da alle Spalten dieselben Werte aufweisen.

  4. Überprüfen Sie Ihre Ergebnisse und begehen Sie Ihre Arbeit zu.

Jetzt schauen wir uns eine zweite Methode.

  1. Backup der Originaltabelle. Dies ist immer noch der wichtigste Schritt!
  2. Stellen Sie sicher Ihre Sicherung ist gut und Sie können Originaltabelle wiederherstellen, falls erforderlich.
  3. Erstellen Sie eine temporäre Tabelle mit eindeutige Datensätze mithilfe von DISTINCT-Klausel.
  4. Löschen Sie alle Datensätze aus der Originaltabelle.
  5. Legen Sie alle Datensätze aus temporären Tabelle, in der Originaltabelle.
  6. Überprüfen Sie Ihre Ergebnisse und begehen Sie Ihre Arbeit zu.

Je nach Ihrer Situation können Sie eine der beiden Methoden für schnellere Ergebnisse. Doppelte Datensätze können mit eindeutigen Indizes verhindert werden. Eindeutige Indizes garantiert Spalten innerhalb des Indexes keine doppelten Werte aufweisen.


Doppelte Zeilen in einer Oracle-Sql-Tabelle loswerden

Doppelte Zeilen in einer Oracle-Sql-Tabelle loswerden : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Doppelte Zeilen in einer Oracle-Sql-Tabelle loswerden
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung