Kuidas Oracle’is dubleerivaid kirjeid kustutada

Oracle’is töötades võite avastada, et mõnel teie kirjel on duplikaadid. Saate need duplikaatread kustutada, tuvastades need ja kasutades selle rea ID-d või rea aadressi. Enne alustamist peaksite looma varundamistabeli juhuks, kui teil on vaja neile pärast kirjete kustutamist viidata.

1
Tuvastage duplikaat. Sel juhul tuvastage näidisdublikaat “Alan”. Veenduge, et kirjed, mida proovite kustutada, on tegelikult duplikaadid, sisestades allpool SQL-i.

2
Tuvastamine veerust nimega “Nimed”. Veeru nimega „Nimed” puhul asendate veeru_nimi veeruga Nimed.

3
Tuvastamine teistest veergudest. Kui prooviksite duplikaadi tuvastada mõne muu veeru järgi, näiteks Alani vanuse järgi, mitte tema nime järgi, sisestaksite veeru_nimi asemele “Vanused” ja nii edasi. valige tabelist veeru_nimi, arv(veeru_nimi) rühmita veeru_nime järgi, mille arv (veeru_nimi) > 1;

4
Valige “nimi nimedest”. Pärast “SQL”, mis tähistab standardset päringukeelt, sisestage “select name from names”.

5
Kustutage kõik duplikaatnimega read. Pärast “SQL” sisestage “delete from names where name=’Alan’;.” Pange tähele, et suurtähtede kasutamine on siin oluline, nii et see kustutab kõik read nimega “Alan”. Pärast “SQL” sisestage “commit”.

6
Rentige rida ilma duplikaadita. Nüüd, kui olete kustutanud kõik read näitenimega “Alan”, saate ühe tagasi lisada, sisestades “insert into name values ​​(‘Alan’);.” Pärast “SQL” sisestage uue rea loomiseks “commit”.

7
Vaadake oma uut loendit. Kui olete ülaltoodud toimingud lõpetanud, saate kontrollida, kas teil pole enam dubleerivaid kirjeid, sisestades “select * from names”.SQL > valige nimi nimedest;NAME————– —————–AlanCarrieTomAlanrows valitud.SQL > kustuta nimedest, kus nimi=’Alan’;read kustutatud.SQL > commit;Commit complete.SQL > sisesta nimedesse väärtused (‘ Alan’);rida loodud.SQL > kinnistamine;Kinnitamine lõpetatud.SQL > vali * nimede hulgast;NAME—————————- –AlanCarrieTomrows valitud.

8
Valige rea ID, mille soovite kustutada. Pärast “SQL” sisestage “select rowid, name from names;.”

9
Kustutage duplikaat. Pärast “SQL” sisestage “delete from names a where rowid > (valige nimedest min(rida) b kus b.nimi=a.nimi);” topeltkirjete kustutamiseks.

10
Kontrollige duplikaate. Kui olete ülaltoodud toimingud lõpetanud, kontrollivad käsud, et näha, kas teil on ikka veel dubleerivaid kirjeid, sisestades “select rowid,name from names;” ja seejärel “commit”.SQL > valige nimede hulgast rowid,name;ROWID NAME—————— ————— —————AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAB AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD TomAABJnsAAGAAAdfOAAF Alanrows from. from.rownames/kushast nimed.a named/kustuta kustutatud.SQL > vali nimedest rida,nimi;ROWID NAME—————— ——————- ———–AABJnsAAGAAAdfOAAA AlanAABJnsAAGAAAdfOAAC CarrieAABJnsAAGAAAdfOAAD Homme on valitud.SQL > kinnistamine;Kinnistamine on lõpetatud.

11
Valige oma read. Pärast “SQL” sisestage “select * from names;” oma ridu näha.

12
Kustutage korduvad read, tuvastades nende veeru. Pärast “SQL” sisestage “delete from names a where rowid > (valige nimedest min(rowid) b, kus b.name=a.name ja b.age=a.age);” topeltkirjete kustutamiseks.

13
Kontrollige duplikaate. Kui olete ülaltoodud sammud lõpetanud, sisestage “vali * nimedest;” ja seejärel “kehtida”, et kontrollida, kas olete duplikaatkirjed edukalt kustutanud. SQL > vali * nimede hulgast; NIMI VANUS——————————- ———– Alan 50Carrie 51Tom 52Alan 50 rida valitud.SQL > kustuta nimedest awhere rowid > (valige min(rida) nimedest bwhere b.name=a.nameand b.age=a.age);rida kustutatud.SQL > valige * nimedest;NAME VANUS—————————— ———– Alan 50Carrie 51Tom 52 rida valitud.SQL > kinnistada ;Pühendumine on lõpetatud.