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);hat etwas Flexibilität zugunsten einer höheren Effizienz geopfert.
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!