
Wenn Sie mit Oracle-Datenbank, ein häufig auftretendes Problem ist doppelte Zeilen in den Tabellen. In der Regel geschieht, wenn dieser einzigartige Zwänge sind während des Ladens entfernt. Unabhängig von der Ursache, können Sie doppelte Datensätze. Doppelte Datensätze haben identische Werte für alle Spalten (oder Spalten, die Teil der eindeutigen Schlüssel).
Es ist mehr als nur einen Weg, um doppelte Einträge zu löschen. Nehmen wir an, dass Table_A hat die folgenden Daten:
Col1 col2
------ -------
101 201
102 202
103 203
102 202
104 204
101 201
Werfen wir einen Blick auf die erste Methode.
- Sichern Sie Ihre Original-Tabelle. Dies ist der wichtigste Schritt!
- Stellen Sie sicher, dass Ihr Backup ist gut, und Sie können die ursprünglichen Tabelle, wenn Sie benötigen.
- Hier ist der Code, um doppelte Einträge zu löschen:
DELETE FROM Table_A ein
WO ROWID! = (SELECT MAX (ROWID)
AUS Table_A b
WO b.col1 = a.col1
UND b.col2 = a.col2);Oracle hat eine Pseudo-Spalte namens "ROWID", das ist einzigartig für jede Zeile in einer Tabelle. So können wir, dass doppelte Datensätze zu löschen. Die obigen Code wird nur ein ROWID für nicht-doppelte Datensätze. Für doppelte Datensätze, es löschen Sie einen Eintrag mit einer niedrigeren ROWID. Wenn es mehr als zwei Spalten, die eindeutigen Schlüssel für einen Datensatz, dann sollten Sie alle Spalten in die WHERE-Bedingung. Es gibt zwei doppelte Datensätze in dem Beispiel, es kommt nicht darauf an, die Aufnahme zu löschen, da wir alle Spalten haben die gleichen Werte.
- Überprüfen Sie Ihre Ergebnisse und übertragen Sie Ihre Arbeit.
Nun lassen Sie uns auf eine zweite Methode.
- Sichern Sie Ihre Original-Tabelle. Dies ist immer noch der wichtigste Schritt!
- Stellen Sie sicher, dass Ihr Backup ist gut, und Sie können die ursprünglichen Tabelle, wenn Sie benötigen.
- Erstellen Sie eine temporäre Tabelle mit eindeutiger Datensätze mit DISTINCT-Klausel.
- Löschen Sie alle Datensätze aus Original-Tabelle.
- Legen Sie alle Datensätze aus temporären Tabelle in die Original-Tabelle.
- Überprüfen Sie Ihre Ergebnisse und übertragen Sie Ihre Arbeit.
Je nach Ihrer Situation können Sie eine der beiden Methoden für schnellere Ergebnisse. Doppelte Datensätze kann verhindert werden, mit eindeutigen Indizes. Indizes gewährleistet, dass Spalten im Index haben keine doppelten Werte.

Delicious
Digg
Google
Yahoo