Oracles Methode zum Entfernen doppelter Daten: 1. Finden Sie alle doppelten Zeilen für die angegebene Spalte und löschen Sie sie. 2. Löschen Sie alle doppelten Zeilen. .
Die Betriebsumgebung dieses Artikels: Windows 7-System, Oracle9i-Version, Dell G3-Computer.
Empfohlen (kostenlos): Oracle-Datenbank
Oracle-Methode zum Entfernen doppelter Daten:
Testdaten erstellen
create table nayi224_180824(col_1 varchar2(10), col_2 varchar2(10), col_3 varchar2(10)); insert into nayi224_180824select 1, 2, 3 from dual union allselect 1, 2, 3 from dual union allselect 5, 2, 3 from dual union allselect 10, 20, 30 from dual ;commit;select*from nayi224_180824;
COL_1 | COL_2 | COL_3 |
---|---|---|
1 | 2 | 3 |
1 | 2 | 3 |
5 | 2 | 3 |
10 | 20 | 30 |
Überprüfen Sie für die angegebene Spalte den Ergebnissatz nach der Deduplizierung 20
30
3 | 5 | |
---|---|---|
ist sehr eingeschränkt, da sie nur alle Abfragespalten deduplizieren kann. Wenn ich col_2 und col3 deduplizieren möchte, kann mein Ergebnissatz nur die Spalten col_2 und col_3 enthalten, nicht jedoch col_1. | ||
COL_2 | COL_3 | |
2 | 3 |
30
Aber es ist auch die einfachste und am leichtesten zu verstehende Art zu schreiben. | row_number() |
---|---|
COL_2 | COL_3 |
2
10 | 20 | 30 | 1 |
---|---|---|---|
Es ist viel schwieriger zu schreiben, bietet aber eine größere Flexibilität. | Suchen Sie für die angegebene Spalte alle doppelten Zeilen | Anzahl mit | |
COL_1 | COL_2 | COL_3 |
1 2
3
3 | 5 | |
---|---|---|
Sie müssen die Tabelle zweimal überprüfen, daher ist die Effizienz gering. Nicht empfohlen. | ||
COL_1 | ||
COL_3 | RN |
1
2 3
1 | 2 | 3 | 3 |
---|---|---|---|
2 | 3 | 3 | |
Sie müssen die Tabelle nur einmal überprüfen, empfohlen. | Löschen Sie alle doppelten Zeilen | Ändern Sie einfach die obige Anweisung leicht. | |
Analytische Funktionsmethode | hat die gleichbleibend hohe Flexibilität von Analysefunktionen. Sie können mit der Gruppierung machen, was Sie wollen, und die orderby-Klausel ändern, um Anforderungen wie „Maximale ID beibehalten“ zu erfüllen. |
delete from nayi224_180824 t where t.rowid in (select rid from (select t1.rowid rid, row_number() over(partition by t1.col_2, t1.col_3 order by 1) rn from nayi224_180824 t1) t1 where t1.rn > 1);
Das obige ist der detaillierte Inhalt vonSo entfernen Sie doppelte Daten in Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!