Kada radite u Oracle -u, možda ćete otkriti da neki od vaših zapisa imaju duplikate. Možete izbrisati ove duple redove tako što ćete ih identificirati i upotrijebiti njegov RowID ili adresu reda. Prije nego započnete, trebali biste stvoriti sigurnosnu tablicu u slučaju da ih trebate referencirati nakon što ste izbrisali zapise.
Koraci
Metoda 1 od 4: Identificiranje vašeg duplikata
Korak 1. Identificirajte duplikat
U ovom slučaju identificirajte primjer duplikata, "Alan". Uvjerite se da su zapisi koje pokušavate izbrisati duplikati tako da unesete donji SQL.
Korak 2. Identifikovanje iz kolone pod nazivom "Imena
"U primjerku stupca pod nazivom" Names ", zamijenili biste" column_name "s Names.
Korak 3. Identifikovanje iz drugih kolona
Ako pokušavate identificirati duplikat pomoću druge kolone, na primjer dobi Alana, a ne njegovog imena, unijeli biste "dob" na mjesto "ime_stupca" itd.
odaberite ime_stupca, broj (ime_ stupca) iz grupe tablica prema imenu stupca s brojem (ime_stupca)> 1;
Metoda 2 od 4: Brisanje jednog duplikata
Korak 1. Odaberite "ime iz imena
"Nakon" SQL ", što znači Standard Query Language, unesite" select name from names ".
Korak 2. Izbrišite sve redove sa dupliciranim imenom
Nakon "SQL", unesite "delete iz imena gdje je name = 'Alan';." Imajte na umu da su velika slova ovdje važna, pa će se tako izbrisati svi redovi pod nazivom "Alan". Nakon "SQL" unesite "commit".
Korak 3. Unesite red bez duplikata
Sada kada ste izbrisali sve redove s primjerom imena "Alan", možete ga umetnuti natrag unošenjem "umetni u vrijednosti imena ('Alan');." Nakon "SQL", unesite "commit" da kreirate svoj novi red.
Korak 4. Pogledajte svoju novu listu
Nakon što dovršite gore navedene korake, možete provjeriti da li više nemate duplikate zapisa unosom "odaberi * iz imena".
SQL> odaberite ime iz imena; IME ------------------------------ Alan Carrie Tom Alan redovi odabrani. SQL> izbriši iz imena gdje je name = 'Alan'; redovi izbrisani. SQL> urezivanje; Urezivanje je dovršeno. SQL> umetni u imena vrijednosti ('Alan'); red kreiran. SQL> urezivanje; Urezivanje je dovršeno. SQL> odaberite * iz imena; IME ------------------------------ Alan Carrie Tom odabrani redovi.
Metoda 3 od 4: Brisanje više duplikata
Korak 1. Odaberite RoWID koji želite izbrisati
Nakon "SQL", unesite "select rowid, name from names;."
Korak 2. Izbrišite duplikat
Nakon "SQL -a", unesite "obriši iz imena a gdje rowid> (odaberite min (red -red) iz imena b gdje je b.name = a.name);" za brisanje dupliciranih zapisa.
Korak 3. Provjerite ima li duplikata
Nakon što ste dovršili gore navedeno, naredbe provjeravaju da li još uvijek imate duplikate zapisa unosom "select rowid, name from names;" a zatim "predati".
SQL> odaberite rowid, ime iz imena; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan redovi odabrani. SQL> izbriši iz imena a where rowid> (odaberite min (rowid) iz imena b gdje je b.name = a.name); redovi izbrisani. SQL> odaberite rowid, ime iz imena; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom redovi odabrani. SQL> urezivanje; Urezivanje je dovršeno.
Metoda 4 od 4: Brisanje redova sa kolonama
Korak 1. Odaberite redove
Nakon "SQL", unesite "odaberite * iz imena;" da vidim vaše redove.
Korak 2. Izbrišite duple redove identificiranjem njihove kolone
Nakon "SQL" "unesite" izbrišite iz imena a where rowid> (odaberite min (rowid) iz imena b gdje je b.name = a.name i b.age = a.age); " za brisanje duplikata zapisa.
Korak 3. Provjerite ima li duplikata
Nakon što dovršite gore navedene korake, unesite "select * from names;" a zatim "urezivanje" kako biste provjerili jeste li uspješno izbrisali duplikate zapisa.
SQL> odaberite * iz imena; IME DOBA ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 redovi odabrani. SQL> izbriši iz imena a where rowid> (odaberite min (rowid) iz imena b gdje je b.name = a.name i b.age = a.age); red izbrisan. SQL> odaberite * iz imena; IME DOBA ------------------------------ ---------- Alan 50 Carrie 51 Tom Odabrana su 52 reda. SQL> urezivanje; Urezivanje je dovršeno.
Upozorenja
-
Napravite rezervnu tablicu za vlastitu prijavu koju možete koristiti za prikaz onoga što je bilo prije brisanja (u slučaju da imate pitanja).
SQL> kreirajte tablicu alan.names_backup kao odaberite * iz imena; Tablica je kreirana.