Verwyder duplikaatdata in oracle

As jy in Oracle werk, kan sommige van jou data verskeie kere verskyn. Jy kan hierdie duplikate verwyder deur hulle te identifiseer en hul ryadres te gebruik. Voordat jy begin, maak `n kopie van die tabel vir ingeval jy daarna moet verwys nadat jy die data uitgevee het.

Trappe

Metode 1 van 4: Bespeur duplikate

Prent getiteld Verwyder duplikaatrekords in Oracle Stap 1
1. Identifiseer die duplikaat. In hierdie geval, identifiseer die monster duplikaat, `Alan`. Maak seker dat die rekords wat jy probeer uitvee eintlik duplikate is deur die SQL-opdrag hieronder in te voer.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 2
2. Soek in `n kolom `Name`. In die geval van `n kolom `Name`, vul dit in vir `kolomnaam`.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 3
3. Soek in ander kolomme. As jy duplikate in `n ander kolom probeer vind, bv. Alan se ouderdom in plaas van sy naam, kan jy `Ouderdom` vir `kolomnaam`, ens.
kies kolomnaam, telling (kolomnaam) uit tabelgroep deur kolomnaam met telling (kolomnaam) > 1;

Metode 2 van 4: Vee `n enkele duplikaat uit

Prent getiteld Verwyder duplikaatrekords in Oracle Stap 4
1. Kies `name uit name`. Na `SQL` (Standard Query Language) tik `kies naam uit name`.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 5
2. Vee alle rye met die duplikaatnaam uit. Na `SQL` tik `delete from names where name=`Alan`;`. Let daarop dat hoofletters hier belangrik is, so dit sal alle rye met die naam `Alan` verwyder. Tik `commit` na `SQL`.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 6
3. Voer die ry weer in sonder `n duplikaat. Noudat jy alle rye met die voorbeeldnaam `Alan` uitgevee het, kan jy een terugsit deur `insert into name values ​​(`Alan`);.` Na `SQL` tik `commit` om die nuwe ry te skep.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 7
4. Kyk na jou nuwe lys. Sodra jy die stappe hierbo voltooi het, kan jy kyk of jy nie duplikaatdata het nie met die opdrag `kies *van name`.
SQL > kies naam uit name; NAAM ------------------------------------ Alan Carrie Tom Alan rye gekies. SQL > verwyder van name waar name=`Alan`; rye verwyder. SQL > pleeg; Verbind voltooi. SQL > voeg waardes in name in (`Alan`); ry geskep. SQL > pleeg; Verbind voltooi. SQL > kies *uit name; NAAM ---------------------------- Alan Carrie Tom-rye gekies.

Metode 3 van 4: Verwyder veelvuldige duplikate

Prent getiteld Verwyder duplikaatrekords in Oracle Stap 8
1. Kies die ry-adres (ry-ID) wat jy wil uitvee. Na `SQL` tik `kies rowid, naam uit name;`.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 9
2. Vee die duplikaat uit. Na `SQL` tik `delete from names a where rowid > (kies min(ry) uit name b waar b.naam=a.naam);` om duplikate van data te verwyder.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 10
3. Kyk vir duplikate. Nadat u bogenoemde voltooi het, kyk of u nog duplikaatdata het deur `select rowid, name from name;` in te tik. en dan `commit`.
SQL > kies rowid, naam uit name; ROWIDNAME ------------------ ---------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rye gekies. SQL > skrap van name a where rowid > (kies min(ry) uit name b waar b.naam=a.naam); rye verwyder. SQL > kies rowid, naam uit name; ROWIDNAME ------------------ ---------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom-rye gekies. SQL > pleeg; Verbind voltooi.

Metode 4 van 4: Vee rye van kolomme uit

Prent getiteld Verwyder duplikaatrekords in Oracle Stap 11
1. Kies die rye. Na `SQL` tik `kies *van name;` om die gekose rye te sien.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 12
2. Verwyder duplikaatrye deur hul kolom te identifiseer. Na `SQL` tik `delete from names a where rowid > (kies min(ry) uit name b waar b.naam=a.naam en b.ouderdom = a.ouderdom);` om die duplikaatdata te verwyder.
Prent getiteld Verwyder duplikaatrekords in Oracle Stap 13
3. Kyk vir duplikate. Sodra jy die stappe hierbo voltooi het, tik `kies *van name;` en dan `commit` om te kyk of jy alle duplikaatdata suksesvol verwyder het.
SQL > kies *uit name; NAAM AGE ---------------------------------- ---------- Alan50 Carrie51 Tom52 Alan50 rye gekies. SQL > skrap van name a where rowid > (kies min(ry) uit name b waar b.naam=a.naam en b.ouderdom = a.ouderdom); ry uitgevee. SQL > kies *uit name; NAAM AGE ---------------------------------- ---------- Alan50 Carrie51 Tom52 rye gekies. SQL > pleeg; Verbind voltooi.

Waarskuwings

  • Maak `n rugsteun van die tabel onder jou eie aanmelding wat jy kan gebruik om te wys hoe die situasie was voor die uitvee (indien vrae gevra word).
SQL > skep tabel alan.name_backup as kies *van name; Tabel geskep.

Оцените, пожалуйста статью