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: Fixed Key Activate Failed in Microsoft Office, Word, Excel, Powerpoint 2024, November
Anonim

As u in Oracle werk, kan u op sommige rekords duplikate vind. U kan dubbele rye verwyder deur dit te identifiseer en die ooreenstemmende RowID -aliasryadres te gebruik. Maak 'n rugsteunstabel voordat u begin, as u 'n verwysing benodig nadat die rekord verwyder is.

Stap

Metode 1 van 4: Identifiseer duplikate

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

Stap 1. Identifiseer duplikate

In hierdie voorbeeld identifiseer ons die duplikaat "Alan". Maak seker dat die rekords wat verwyder moet word inderdaad 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 die kolom met die titel "Naam"

As die kolom die titel "Naam" het, moet u "column_name" vervang met Name.

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

Stap 3. Identifiseer die ander kolomme

As u duplikate uit verskillende kolomme probeer identifiseer, byvoorbeeld Alan se ouderdom in plaas van sy naam, voer 'Ouderdom' in plaas van 'kolomnaam', ensovoorts.

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

Metode 2 van 4: Die verwydering van enkele duplikate

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

Stap 1. Kies "naam uit name"

Na "SQL" (afkorting 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 duplikaatname uit

Voer na "SQL" in "delete from names where name = 'Alan';." Daar moet op gelet word dat hoofletters hier belangrik is, sodat hierdie stap al die reëls met die naam "Alan" kan verwyder. Na "SQL", voer "commit" in

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

Stap 3. Voer rye weer in sonder duplikate

Noudat u al die rye uitgevee het en dit met "Alan" vervang het, vul u een weer in deur "invoeg in naamwaardes ('Alan') in te voer;." Na "SQL", voer "commit" in om 'n nuwe reël te skep.

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

Stap 4. Bekyk die nuwe lys

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

SQL> kies naam uit name; NAAM ------------------------------ Alan Citra Tomi Alan Baris gekies. SQL> verwyder uit name waar naam = 'Alan'; Die reël word uitgevee. SQL> verbind; / Pleeg voltooi. SQL> voeg waardes in ('Alan'); ry geskep. SQL> verbind; Pleeg voltooi. SQL> kies * uit name; NAAM ------------------------------ Alan Citra Tomi-rye gekies.

Metode 3 van 4: Die verwydering van veelvoudige duplikate

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. Verwyder duplikate

Na "SQL", voer "verwyder uit name a waar rowid> (kies min (rowid) uit name b waar b.name = a.name);" duplikate 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 stappe voltooi het, kyk na duplikate deur "select rowid, name from names;" in te voer 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 volgens kolomme uitvee

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

Stap 1. Kies die ry

Na "SQL", voer "kies * uit name;" om die lyn te kan sien.

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

Stap 2. Verwyder dubbele rye deur hul kolomme 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 dubbele rekords 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;" in "verbind" dan om te sien of die duplikate werklik verwyder is.

SQL> kies * uit name; NAAM OUDERDOM --------------------------------- Alan 50 Citra 51 Tomi 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 Alan Citra 51 Tomi 52 rye gekies. SQL> verbind; Pleeg voltooi.

Waarskuwing

  • Skep 'n dubbele tabel in u aanmelding, sodat dit as inhoudsverwysing gebruik kan word as geen data uitgevee is nie (indien u enige vrae het).

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

Aanbeveel: