Bei der Datenverarbeitung treten häufig Probleme bei der Datenduplizierung auf. Um die Genauigkeit der Daten und die Klarheit des Data Warehouse sicherzustellen, müssen wir häufig doppelte Daten in der Datenbank löschen. In diesem Artikel erfahren Sie, wie Sie doppelte Daten in einer Oracle-Datenbank löschen.
Bevor Sie doppelte Daten löschen, müssen Sie zunächst feststellen, welche Daten dupliziert sind. Wir können die SELECT-Anweisung und die GROUP BY-Anweisung verwenden, um nach doppelten Daten abzufragen. Beispielsweise haben wir eine Tabelle mit dem Namen „Tabellenname“, die ein Feld mit dem Namen „Spaltenname“ enthält. Sie können die folgende Anweisung verwenden, um alle doppelten Daten zu finden:
SELECT Spaltenname, COUNT(*) als Anzahl
FROM Tabellenname
GROUP BY Spaltenname
HAVING COUNT(*) > 1;
Diese Anweisung gibt die Summe der zurück Anzahl aller doppelten Daten. Wiederholte Feldwerte. Wenn wir alle doppelten Daten löschen möchten, können wir die folgende Anweisung verwenden:
DELETE FROM tablename
WHERE columnsname IN (SELECT columnsname
FROM tablename
GROUP BY columnsname
HAVING COUNT(*) > 1);
In this Anweisung Das Schlüsselwort „IN“ bedeutet, Duplikate im Feld „Spaltenname“ auszuwählen und diese Zeilen dann zu löschen.
ROWID in der Oracle-Datenbank ist eine eindeutige Kennung in der Datenbank. Wir können ROWID verwenden, um doppelte Daten zu entfernen. Das Folgende ist ein Beispiel für die Verwendung von ROWID zum Löschen doppelter Daten:
DELETE FROM tablename
WHERE ROWID NOT IN
(SELECT MIN(ROWID) FROM tablename GROUP BY columnname);
Diese Anweisung löscht alle doppelten Zeilen außer der ersten doppelten Zeile. In der „SELECT“-Anweisung fragen wir nach der kleinsten ROWID des Feldes „columnname“ und vergleichen sie mit anderen doppelten Werten in der Zeilen-ID. Nur die ROWID der ersten doppelten Zeile stimmt mit keiner anderen ROWID überein und verbleibt in der Datenbank.
Die Verwendung allgemeiner Tabellenausdrücke (CTE) ist auch eine Möglichkeit, doppelte Daten zu entfernen. Das Folgende ist ein Beispiel für die Verwendung von CTE zum Entfernen doppelter Daten:
WITH cte AS
(SELECT columnname, ROW_NUMBER() OVER (PARTITION BY columnname ORDER BY columnname) AS rn FROM tablename)
DELETE FROM cte
WHERE rn > 1;
In diesem Beispiel verwenden wir die „SELECT“-Anweisung, um den CTE „cte“ zu benennen ". Diese Anweisung verwendet die Funktion ROW_NUMBER(), um die Daten basierend auf dem Feld „Spaltenname“ in aufsteigender Reihenfolge (ORDER BY) zu partitionieren und zu sortieren. Danach löschen wir alle Zeilen, in denen „rn“rn“ größer als 1 ist.
Die letzte Möglichkeit, doppelte Daten in der Oracle-Datenbank zu entfernen, ist die Verwendung des Schlüsselworts DISTINCT. Hier ist So verwenden Sie DISTINCT Beispiel für die Schlüsselwortdeduplizierung:
DELETE FROM tablename
WHERE columnsname NOT IN
(SELECT DISTINCT columnname FROM tablename);
In diesem Beispiel verwenden wir eine verschachtelte SELECT-Anweisung. In der Unterabfrage verwenden wir das DISTINCT-Schlüsselwort, um den eindeutigen „columnname“ zu finden „.“ Wert und vergleichen Sie ihn mit dem Feld „Spaltenname“. Diese Anweisung entfernt alle doppelten Daten, die in den Ergebnissen der Unterabfrage enthalten sind.
Zusammenfassung
Das Entfernen doppelter Daten ist ein wichtiger Schritt bei der Datenverarbeitung. Oracle Database bietet viele Möglichkeiten Um doppelte Zeilen zu löschen, können wir die SELECT-Anweisung und die GROUP BY-Anweisung verwenden, um zu bestimmen, welche Daten dupliziert werden, und dann die DELETE-Anweisung verwenden, um die Daten zu löschen Um doppelte Daten in der Datenbank zu entfernen, können wir die Datengenauigkeit und die Klarheit des Data Warehouse sicherstellen
Das obige ist der detaillierte Inhalt vonSo löschen Sie doppelte Daten in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!