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
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.
Stap 2. Identifiseer uit die kolom met die titel "Naam"
As die kolom die titel "Naam" het, moet u "column_name" vervang met Name.
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
Stap 1. Kies "naam uit name"
Na "SQL" (afkorting vir Standard Query Language), voer "kies naam uit name" in.
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
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.
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
Stap 1. Kies die RowID wat u wil verwyder
Na "SQL", voer "kies rowid, naam uit name;."
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.
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
Stap 1. Kies die ry
Na "SQL", voer "kies * uit name;" om die lyn te kan sien.
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.
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.