Când lucrați în Oracle, este posibil să constatați că unele dintre înregistrările dvs. au duplicate. Puteți șterge aceste rânduri duplicate identificându-le și folosind RowID sau adresa de rând. Înainte de a începe, ar trebui să creați un tabel de rezervă în cazul în care trebuie să le faceți referire după ce ați șters înregistrările.
Pași
Metoda 1 din 4: Identificarea duplicatului dvs
Pasul 1. Identificați duplicatul
În acest caz, identificați exemplul duplicat, „Alan”. Asigurați-vă că înregistrările pe care încercați să le ștergeți sunt de fapt duplicate, introducând SQL-ul de mai jos.
Pasul 2. Identificarea dintr-o coloană numită „Nume
„În cazul unei coloane numite„ Nume”, ați înlocui„ nume_coloană”cu Nume.
Pasul 3. Identificarea din alte coloane
Dacă încercați să identificați duplicatul printr-o coloană diferită, de exemplu, mai degrabă vârsta lui Alan decât numele său, ați introduce „Vârste” în locul „nume_coloană” și așa mai departe.
selectați nume_coloană, număr (nume_coloană) din grupul de tabele după nume_coloană având număr (nume_coloană)> 1;
Metoda 2 din 4: Ștergerea unui singur duplicat
Pasul 1. Selectați „nume din nume
„După„ SQL”, care înseamnă Standard Query Language, introduceți„ selectați numele din nume”.
Pasul 2. Ștergeți toate rândurile cu numele duplicat
După „SQL”, introduceți „ștergeți din nume unde name =„ Alan”;.” Rețineți că scrierea cu majuscule este importantă aici, astfel încât aceasta va șterge toate rândurile numite „Alan”. După „SQL”, introduceți „commit”.
Pasul 3. Închiriați rândul fără un duplicat
Acum, după ce ați șters toate rândurile cu numele de exemplu „Alan”, puteți insera unul înapoi introducând „inserare în valorile numelui („ Alan”);.” După „SQL”, introduceți „commit” pentru a vă crea noul rând.
Pasul 4. Consultați noua dvs. listă
După ce ați parcurs pașii de mai sus, puteți verifica dacă nu mai aveți înregistrări duplicate, introducând „selectați * din nume”.
SQL> selectați numele din nume; NUME ------------------------------ Alan Carrie Tom Alan rânduri selectate. SQL> șterge din nume unde name = 'Alan'; rânduri șterse. SQL> commit; Angajare finalizată. SQL> introduceți în valori valori („Alan”); rând creat. SQL> commit; Angajare finalizată. SQL> selectați * din nume; NUME ------------------------------ Alan Carrie Tom rânduri selectate.
Metoda 3 din 4: Ștergerea mai multor duplicate
Pasul 1. Selectați RowID pe care doriți să îl ștergeți
După „SQL”, „introduceți” selectați rowid, numele din nume;."
Pasul 2. Ștergeți duplicatul
După „SQL”, „introduceți„ ștergeți din nume a unde rowid> (selectați min (rowid) din numele b unde b.name = a.name); " pentru a șterge înregistrările duplicate.
Pasul 3. Verificați dacă există duplicate
După ce ați finalizat cele de mai sus, comenzile verifică dacă mai aveți înregistrări duplicate introducând „selectați rândul, numele din nume;” și apoi „comite”.
SQL> selectați rowid, nume din nume; NUME ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rânduri selectate. SQL> șterge din nume a unde rowid> (selectează min (rowid) din numele b unde b.name = a.name); rânduri șterse. SQL> selectați rowid, nume din nume; NUME ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom rânduri selectate. SQL> commit; Angajare finalizată.
Metoda 4 din 4: Ștergerea rândurilor cu coloane
Pasul 1. Selectați rândurile
După „SQL”, introduceți „selectați * din nume;” pentru a vă vedea rândurile.
Pasul 2. Ștergeți rândurile duplicate identificându-le coloana
După „SQL” „introduceți„ ștergeți din nume un unde rowid> (selectați min (rowid) din nume b unde b.name = a.name și b.age = a.age); " pentru a șterge înregistrările duplicate.
Pasul 3. Verificați dacă există duplicate
După ce ați parcurs pașii de mai sus, introduceți „selectați * din nume;” și apoi „comiteți” pentru a verifica dacă ați șters cu succes înregistrările duplicate.
SQL> selectați * din nume; NUME VÂRSTĂ ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 rânduri selectate. SQL> șterge din nume a unde rowid> (selectează min (rowid) din numele b unde b.name = a.name și b.age = a.age); rând șters. SQL> selectați * din nume; NUME VÂRSTĂ ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 de rânduri selectate. SQL> commit; Angajare finalizată.
Avertizări
-
Creați un tabel de rezervă în propria dvs. conectare pe care o puteți folosi pentru a arăta ce a fost acolo înainte de orice ștergere (în cazul în care există întrebări).
SQL> creați tabelul alan.names_backup ca selectați * din nume; Tabel creat.