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!