Oracle'is töötades leiate mõnest kirjest duplikaate. Dubleerivaid ridu saate eemaldada, tuvastades need ja kasutades vastavat RowID aliase rea aadressi. Enne alustamist looge varutabel juhuks, kui pärast kirje kustutamist vajate viidet.
Samm
Meetod 1 /4: duplikaatide tuvastamine
Samm 1. Tuvastage duplikaadid
Selles näites tuvastame duplikaadi "Alan". Veenduge, et kustutatavad kirjed on tõepoolest duplikaadid, sisestades alloleva SQL -i.
Samm 2. Tuvastage veerust pealkirjaga "Nimi"
Kui veeru pealkiri on "Nimi", peate veeru "veeru_nimi" asendama nimega.
Samm 3. Tuvastage muud veerud
Kui proovite tuvastada duplikaate erinevatest veergudest, näiteks Alani vanust tema nime asemel, sisestage veeru_nimi asemel „Age” ja nii edasi.
valige veeru_nimi, loendage (veeru_nimi) tabelirühmast veeru_nime järgi, mille arv (veeru_nimi)> 1;
Meetod 2/4: üksikute duplikaatide eemaldamine
Samm 1. Valige "nimi nimede hulgast"
Sisestage pärast "SQL" (lühend standardpäringukeelest) "valige nimedest nimi".
Samm 2. Kustutage kõik duplikaatnimedega read
Pärast "SQL" sisestage "kustuta nimedest, kus name = 'Alan';." Tuleb märkida, et suurtähtede kasutamine on siin oluline, et see samm saaks kustutada kõik read nimega "Alan". Pärast "SQL" sisestage "pühenduma"
Samm 3. Sisestage read uuesti ilma duplikaatideta
Nüüd, kui olete kõik read kustutanud ja asendanud need sõnaga "Alan", täitke üks neist uuesti, sisestades "insert into name values ('Alan');." Pärast "SQL" sisestage uue rea loomiseks "pühenduma".
Samm 4. Vaadake uut loendit
Pärast ülaltoodud toimingute tegemist saate kontrollida, kas pole enam topeltkirjeid, sisestades "vali * nimedest".
SQL> valige nimedest nimi; NIMI ------------------------------ Alan Citra Tomi Alan Baris valitud. SQL> kustutage nimedest, kus nimi = 'Alan'; Rida kustutatakse. SQL> kohustub; / Kohustus lõpetatud. SQL> sisestada nimedesse väärtused ('Alan'); rida loodud. SQL> kohustub; Kohustus täidetud. SQL> valige * nimede seast; NIMI ------------------------------ Alan Citra Tomi read on valitud.
3. meetod 4 -st: mitme duplikaadi eemaldamine
Samm 1. Valige RowID, mida soovite kustutada
Pärast "SQL" sisestage "select rowid, name from names;."
Samm 2. Eemaldage duplikaadid
Pärast "SQL" sisestage "kustuta nimedest a kus rowid> (valige nimedest b kus b.name = a.name) min (rowid);" duplikaatide eemaldamiseks.
Samm 3. Kontrollige duplikaate
Pärast ülaltoodud toimingute tegemist kontrollige duplikaate, sisestades "select rowid, name from names;" siis "pühenduma".
SQL> valige rowid, nimi nimede seast; ROWID NIMI ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan read valitud. SQL> kustuta nimedest a kus rowid> (vali min (rowid) nimedest b kus b.name = a.name); read kustutatud. SQL> valige rowid, nimi nimede seast; ROWID NIMI ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom read valitud. SQL> kohustub; Kohustus täidetud.
Meetod 4/4: ridade kustutamine veergude kaupa
Samm 1. Valige rida
Pärast "SQL" sisestage "select * nimedest;" et oleks võimalik joont näha.
Samm 2. Eemaldage duplikaatridad, tuvastades nende veerud
Pärast "SQL" "sisestage" kustutage nimedest a kus rowid> (valige min (rowid) nimedest b kus b.name = a.name ja b.age = a.age); " dubleerivate kirjete eemaldamiseks.
Samm 3. Kontrollige duplikaate
Kui olete ülaltoodud toimingud lõpetanud, sisestage "vali * nimede seast;" seejärel "pühenduma", et näha, kas duplikaadid on tegelikult eemaldatud.
SQL> valige * nimede seast; NIMI VANUS ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 read valitud. SQL> kustuta nimedest a kus rowid> (vali min (rowid) nimedest b kus b.name = a.name ja b.age = a.age); rida kustutatud. SQL> valige * nimede seast; NIMI VANUS ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 rida valitud. SQL> kohustub; Kohustus täidetud.
Hoiatus
-
Looge oma sisselogimisel duplikaattabel, et seda saaks kasutada sisulisena, kui andmeid pole kustutatud (kui teil on küsimusi).
SQL> luua tabel alan.names_backup kui valida * nimedest; Tabel on loodud.