Oracle'is töötades võite avastada, et mõnel teie kirjel on duplikaadid. Saate need dubleerivad read kustutada, tuvastades need ja kasutades selle RowID või rea aadressi. Enne alustamist peaksite looma varutabeli juhuks, kui peate pärast kirjete kustutamist neile viitama.
Sammud
Meetod 1 /4: duplikaadi tuvastamine
Samm 1. Tuvastage duplikaat
Sel juhul tuvastage näite duplikaat "Alan". Veenduge, et kustutatavad kirjed on tegelikult duplikaadid, sisestades alloleva SQL -i.
Samm 2. Identifitseerimine veerust nimega "Nimed
"Veeru nimega" Nimed "korral asendaksite veeru_nimi" nimedega.
Samm 3. Teiste veergude tuvastamine
Kui prooviksite duplikaati tuvastada mõne muu veeru järgi, näiteks Alani vanuse, mitte tema nime järgi, sisestaksite veeru_nimi asemel veeru „Ages” jne.
valige veeru_nimi, loendage (veeru_nimi) tabelirühmast veeru_nime järgi, mille arv (veeru_nimi)> 1;
Meetod 2/4: ühe duplikaadi kustutamine
Samm 1. Valige "nimi nimede hulgast
"Pärast" SQL -i ", mis tähistab standardset päringukeelt, sisestage" valige nimedest nimi ".
Samm 2. Kustutage kõik duplikaatnimega read
Pärast "SQL" sisestage "delete" nimedest, kus name = 'Alan';. " Pange tähele, et suurtähtede kasutamine on siin oluline, seega kustutatakse kõik read, mille nimi on "Alan". Pärast "SQL" sisestage "pühenduma".
Samm 3. Rentida rida ilma duplikaadita
Nüüd, kui olete kustutanud kõik read näite nimega "Alan", saate ühe tagasi sisestada, sisestades "sisesta nime väärtustesse ('Alan');." Pärast "SQL -i" sisestage uue rea loomiseks "pühenduma".
Samm 4. Vaadake oma uut loendit
Kui olete ülaltoodud sammud lõpetanud, saate kontrollida, kas teil pole enam topeltkirjeid, sisestades "vali * nimede seast".
SQL> valige nimedest nimi; NAME ------------------------------ Alan Carrie Tom Alan read valitud. SQL> kustutage nimedest, kus nimi = 'Alan'; read kustutatud. SQL> kohustus; Kohustus täidetud. SQL> sisestada nimedesse väärtused ('Alan'); rida loodud. SQL> kohustus; Kohustus täidetud. SQL> valige * nimede seast; NIMI ------------------------------ Alan Carrie Tom ridu valitud.
3. meetod 4 -st: mitme duplikaadi kustutamine
Samm 1. Valige RowID, mida soovite kustutada
Pärast "SQL" sisestage "select rowid, name from names;."
Samm 2. Kustutage duplikaat
Pärast "SQL -i" sisestage "kustuta nimedest a kus rowid> (valige nimedest b kus b.name = a.name) min (rowid);" dubleerivate kirjete kustutamiseks.
Samm 3. Kontrollige duplikaate
Kui olete ülaltoodud lõpule viinud, kontrollivad käsud, kas teil on endiselt kirjeid dubleerivaid, sisestades "select rowid, name from names;" ja 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 nimedest; ROWID NIMI ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom read valitud. SQL> kohustus; Kohustus täidetud.
Meetod 4/4: ridade kustutamine veergudega
Samm 1. Valige oma read
Pärast "SQL" sisestage "select * nimedest;" oma ridade nägemiseks.
Samm 2. Kustutage duplikaatridad, tuvastades nende veeru
Pärast "SQL" "sisestage" kustutage nimedest a kus rowid> (valige min (rowid) nimedest b kus b.name = a.name ja b.age = a.age); " duplikaatide kustutamiseks.
Samm 3. Kontrollige duplikaate
Kui olete ülaltoodud sammud lõpetanud, sisestage "vali nimedest *;" ja seejärel "pühenduma", et kontrollida, kas olete duplikaatide edukalt kustutanud.
SQL> valige * nimede seast; NIMI VANUS ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 read valitud. SQL> kustutage nimedest a kus rowid> (valige min (rowid) nimedest b kus b.name = a.name ja b.age = a.age); rida kustutatud. SQL> valige * nimede seast; NIMI VANUS ------------------------------ ---------- Alan 50 Carrie 51 Tom Valitud 52 rida. SQL> kohustus; Kohustus täidetud.
Hoiatused
-
Looge oma sisselogimisel varutabel, mille abil saate näidata, mis oli enne kustutamist (kui teil on küsimusi).
SQL> luua tabel alan.names_backup kui valida * nimedest; Tabel on loodud.