Strādājot Oracle, var gadīties, ka dažiem jūsu ierakstiem ir dublikāti. Šīs dublētās rindas varat izdzēst, identificējot tās un izmantojot tās RowID vai rindas adresi. Pirms sākat, jums jāizveido dublējuma tabula gadījumam, ja pēc ierakstu dzēšanas jums uz tām ir jāatsaucas.
Soļi
1. metode no 4: dublikāta identificēšana
1. darbība. Identificējiet dublikātu
Šajā gadījumā identificējiet piemēra dublikātu "Alan". Pārliecinieties, vai ieraksti, kurus mēģināt izdzēst, patiesībā ir dublikāti, ievadot zemāk esošo SQL.
2. darbība. Identificēšana no kolonnas ar nosaukumu "Vārdi
"Kolonnas, kuras nosaukums ir" Vārdi ", gadījumā" kolonnas_nosaukums "jāaizstāj ar nosaukumu.
3. solis. Identificēšana no citām kolonnām
Ja jūs mēģinātu identificēt dublikātu pēc citas slejas, piemēram, pēc Alana vecuma, nevis pēc viņa vārda, kolonnas_nosaukuma vietā ievadiet “Vecums” un tā tālāk.
tabulas grupā atlasiet kolonnas_nosaukumu, skaitu (kolonnas_nosaukumu) pēc kolonnas_nosaukuma, kura skaits (kolonnas_nosaukums)> 1;
2. metode no 4: viena dublikāta dzēšana
1. solis. Atlasiet vārdu no nosaukumiem
"Pēc" SQL ", kas apzīmē standarta vaicājumu valodu, ievadiet" izvēlieties vārdu no nosaukumiem ".
2. darbība. Dzēsiet visas rindas ar dublēto nosaukumu
Pēc "SQL" ievadiet "delete" no nosaukumiem, kur name = 'Alan';. " Ņemiet vērā, ka lielajiem burtiem ir liela nozīme, tāpēc tiks dzēstas visas rindas ar nosaukumu "Alan". Pēc "SQL" ievadiet "veikt".
3. solis. Iznomājiet rindu bez dublikāta
Tagad, kad esat izdzēsis visas rindas ar piemēra nosaukumu "Alan", varat ievietot vienu atpakaļ, ievadot "insert in name values ('Alan');." Pēc "SQL" ievadiet "saistīt", lai izveidotu jaunu rindu.
4. solis. Skatiet savu jauno sarakstu
Kad esat pabeidzis iepriekš minētās darbības, varat pārbaudīt, vai jums vairs nav ierakstu dublikātu, ievadot "izvēlieties * no nosaukumiem".
SQL> izvēlieties vārdu no nosaukumiem; NAME ------------------------------ Alan Carrie Tom Alan rindas atlasītas. SQL> dzēst no nosaukumiem, kur name = 'Alan'; rindas izdzēstas. SQL> veikt; Apņemšanās pabeigta. SQL> ievietojiet nosaukumos vērtības ('Alan'); rinda izveidota. SQL> veikt; Apņemšanās pabeigta. SQL> izvēlieties * no nosaukumiem; NOSAUKUMS ------------------------------ Atlasītas Alanas Kerijas Toma rindas.
3. metode no 4: vairāku dublikātu dzēšana
1. solis. Izvēlieties RowID, kuru vēlaties dzēst
Pēc "SQL" ievadiet "select rowid, name from names;."
2. darbība. Izdzēsiet dublikātu
Pēc "SQL" ievadiet "dzēst no nosaukumiem a kur rowid> (izvēlieties min (rowid) no nosaukumiem b kur b.name = a.name);" lai izdzēstu ierakstu dublikātus.
3. darbība. Pārbaudiet, vai nav dublikātu
Kad esat pabeidzis iepriekš minēto, komandas pārbauda, vai jums joprojām ir ierakstu dublikāti, ievadot "select rowid, name from names;" un tad "apņemties".
SQL> izvēlieties rowid, nosaukumu no nosaukumiem; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rindas atlasītas. SQL> dzēst no nosaukumiem a kur rowid> (izvēlieties min (rowid) no nosaukumiem b, kur b.name = a.name); rindas izdzēstas. SQL> izvēlieties rowid, nosaukumu no nosaukumiem; ROWID NAME ------------------ ------------------------------ Atlasītas Tom rindas. SQL> veikt; Apņemšanās pabeigta.
4. metode no 4: rindu ar kolonnām dzēšana
1. solis. Atlasiet rindas
Pēc "SQL" ievadiet "izvēlieties * no nosaukumiem;" lai redzētu savas rindas.
2. darbība. Dzēsiet dublētās rindas, identificējot to kolonnu
Pēc "SQL" ievadiet "dzēst no nosaukumiem a kur rowid> (izvēlieties min (rowid) no nosaukumiem b kur b.name = a.name un b.age = a.age);" lai izdzēstu ierakstu dublikātus.
3. darbība. Pārbaudiet, vai nav dublikātu
Kad esat pabeidzis iepriekš minētās darbības, ievadiet "izvēlieties * no nosaukumiem;" un pēc tam veiciet saistības, lai pārbaudītu, vai esat veiksmīgi izdzēsis ierakstu dublikātus.
SQL> izvēlieties * no nosaukumiem; VĀRDA VECUMS ------------------------------ ---------- Alans 50 Kerijs 51 Toms 52 Alans 50 atlasītas rindas. SQL> dzēst no nosaukumiem a kur rowid> (izvēlieties min (rowid) no nosaukumiem b kur b.name = a.name un b.age = a.age); rinda ir izdzēsta. SQL> izvēlieties * no nosaukumiem; Nosaukuma vecums ------------------------------ ---------- Alans 50 Kerija 51 Toms Atlasītas 52 rindas. SQL> veikt; Apņemšanās pabeigta.
Brīdinājumi
-
Izveidojiet rezerves tabulu savā pierakstīšanās sistēmā, kuru varat izmantot, lai parādītu, kas bija pirms dzēšanas (ja rodas kādi jautājumi).
SQL> izveidot tabulu alan.names_backup kā izvēlieties * no nosaukumiem; Tabula izveidota.