4 maniere om dubbele rekords in Oracle te verwyder

INHOUDSOPGAWE:

4 maniere om dubbele rekords in Oracle te verwyder
4 maniere om dubbele rekords in Oracle te verwyder

Video: 4 maniere om dubbele rekords in Oracle te verwyder

Video: 4 maniere om dubbele rekords in Oracle te verwyder
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Mei
Anonim

As u in Oracle werk, kan u agterkom dat sommige van u rekords duplikate bevat. U kan hierdie dubbele rye uitvee deur dit te identifiseer en die RowID- of ryadres daarvan te gebruik. Voordat u begin, moet u 'n rugsteuntabel skep as u daarna moet verwys nadat u rekords verwyder het.

Stappe

Metode 1 van 4: Identifiseer u duplikaat

Verwyder dubbele rekords in Oracle Stap 1
Verwyder dubbele rekords in Oracle Stap 1

Stap 1. Identifiseer die duplikaat

Identifiseer in hierdie geval die voorbeeld duplikaat, "Alan." Maak seker dat die rekords wat u probeer verwyder, eintlik duplikate is deur die onderstaande SQL in te voer.

Verwyder dubbele rekords in Oracle Stap 2
Verwyder dubbele rekords in Oracle Stap 2

Stap 2. Identifiseer uit 'n kolom met die naam "Name

'In die geval van 'n kolom met die naam' Name ', sou u' column_name 'vervang met Name.

Verwyder dubbele rekords in Oracle Stap 3
Verwyder dubbele rekords in Oracle Stap 3

Stap 3. Identifiseer uit ander kolomme

As u die duplikaat probeer identifiseer deur 'n ander kolom, byvoorbeeld die ouderdom van Alan eerder as sy naam, sou u 'Ages' in die plek van 'column_name' ensovoorts invoer.

kies kolomnaam, tel (kolomnaam) uit tabelgroep volgens kolomnaam met tel (kolomnaam)> 1;

Metode 2 van 4: 'n Enkele duplikaat uitvee

Verwyder dubbele rekords in Oracle Stap 4
Verwyder dubbele rekords in Oracle Stap 4

Stap 1. Kies "naam uit name

"Na" SQL ", wat staan vir Standard Query Language, voer" kies naam uit name "in.

Verwyder dubbele rekords in Oracle Stap 5
Verwyder dubbele rekords in Oracle Stap 5

Stap 2. Vee alle rye met die duplikaatnaam uit

Tik na "SQL" op "delete from names where name = 'Alan';." Let daarop dat hoofletters hier belangrik is, sodat al die rye met die naam 'Alan' verwyder word. Na "SQL", voer "commit" in.

Verwyder dubbele rekords in Oracle Stap 6
Verwyder dubbele rekords in Oracle Stap 6

Stap 3. Huur die ry sonder 'n duplikaat

Noudat u alle rye met die voorbeeldnaam "Alan" verwyder het, kan u een terug invoeg deur "invoeg in naamwaardes ('Alan') in te voer;." Na "SQL", voer "commit" in om u nuwe ry te skep.

Verwyder dubbele rekords in Oracle Stap 7
Verwyder dubbele rekords in Oracle Stap 7

Stap 4. Sien u nuwe lys

Nadat u die bogenoemde stappe voltooi het, kan u seker maak dat u nie meer dubbele rekords het nie, deur 'kies * uit name' in te voer.

SQL> kies naam uit name; NAAM ------------------------------ Alan Carrie Tom Alan rye gekies. SQL> verwyder uit name waar naam = 'Alan'; rye uitgevee. SQL> verbind; Pleeg voltooi. SQL> voeg waardes in ('Alan'); ry geskep. SQL> verbind; Pleeg voltooi. SQL> kies * uit name; NAAM ------------------------------ Alan Carrie Tom rye gekies.

Metode 3 van 4: Meervoudige duplikate uitvee

Verwyder dubbele rekords in Oracle Stap 8
Verwyder dubbele rekords in Oracle Stap 8

Stap 1. Kies die RowID wat u wil verwyder

Na "SQL", voer "kies rowid, naam uit name;."

Verwyder dubbele rekords in Oracle Stap 9
Verwyder dubbele rekords in Oracle Stap 9

Stap 2. Vee die duplikaat uit

Tik na "SQL" op "delete from names a where rowid> (select min (rowid) from names b where b.name = a.name);" om dubbele rekords te verwyder.

Verwyder dubbele rekords in Oracle Stap 10
Verwyder dubbele rekords in Oracle Stap 10

Stap 3. Kyk vir duplikate

Nadat u die bogenoemde voltooi het, kontroleer die opdragte of u nog steeds dubbele rekords het deur 'select rowid, name from names;' in te voer en dan "pleeg."

SQL> kies rowid, naam uit name; ROWID NAAM ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rye gekies. SQL> verwyder uit name a waar rowid> (kies min (rowid) uit name b waar b.name = a.name); rye uitgevee. SQL> kies rowid, naam uit name; ROWID NAAM ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom rye gekies. SQL> verbind; Pleeg voltooi.

Metode 4 van 4: Rye met kolomme uitvee

Verwyder dubbele rekords in Oracle Stap 11
Verwyder dubbele rekords in Oracle Stap 11

Stap 1. Kies u rye

Na "SQL", voer "kies * uit name;" om jou rye te sien.

Verwyder dubbele rekords in Oracle Stap 12
Verwyder dubbele rekords in Oracle Stap 12

Stap 2. Vee dubbele rye uit deur hul kolom te identifiseer

Na "SQL", voer "verwyder uit name a waar rowid> (kies min (rowid) uit name b waar b.name = a.name en b.age = a.age);" om die duplikaatrekords te verwyder.

Verwyder dubbele rekords in Oracle Stap 13
Verwyder dubbele rekords in Oracle Stap 13

Stap 3. Kyk vir duplikate

Nadat u die bogenoemde stappe voltooi het, voer "kies * uit name;" en dan "verbind" om te kontroleer of u die duplikaatrekords suksesvol verwyder het.

SQL> kies * uit name; NAAM OUDERDOM -------------------------------- Alan 50 Carrie 51 Tom 52 Alan 50 rye gekies. SQL> verwyder uit name a waar rowid> (kies min (rowid) uit name b waar b.name = a.name en b.age = a.age); ry uitgevee. SQL> kies * uit name; NAAM OUDERDOM ---------------------------------Alan 50 Carrie 51 Tom 52 rye gekies. SQL> verbind; Pleeg voltooi.

Waarskuwings

  • Skep 'n rugsteunstafel in u eie aanmelding wat u kan gebruik om aan te toon wat daar was voordat enige uitvee plaasgevind het (indien daar enige vrae is).

    SQL> skep tabel alan.names_backup as kies * uit name; Tabel geskep.

Aanbeveel: