Strādājot Oracle, dažos ierakstos varat atrast dublikātus. Jūs varat noņemt dublētas rindas, identificējot tās un izmantojot atbilstošo RowID aizstājvārda rindas adresi. Pirms sākat, izveidojiet rezerves tabulu, ja pēc ieraksta dzēšanas jums ir nepieciešama atsauce.
Solis
1. metode no 4: dublikātu identificēšana
1. darbība. Identificējiet dublikātus
Šajā piemērā mēs identificējam dublikātu "Alan". Pārliecinieties, vai dzēšamie ieraksti patiešām ir dublikāti, ievadot zemāk esošo SQL.
2. solis. Identificējiet slejā ar nosaukumu "Nosaukums"
Ja kolonnas nosaukums ir “Nosaukums”, “kolonnas_nosaukums” ir jāaizstāj ar nosaukumu.
3. solis. Nosakiet citas kolonnas
Ja jūs mēģināt identificēt dublikātus no dažādām kolonnām, piemēram, Alana vecumu, nevis viņa vārdu, ievadiet “Vecums” slejas_nosaukuma vietā utt.
tabulas grupā atlasiet kolonnas_nosaukumu, skaitu (kolonnas_nosaukumu) pēc kolonnas_nosaukuma, kura skaits (kolonnas_nosaukums)> 1;
2. metode no 4: atsevišķu dublikātu noņemšana
1. solis. Izvēlieties "vārds no nosaukumiem"
Pēc "SQL" (saīsinājums no standarta vaicājumu valodas) ievadiet "izvēlieties vārdu no nosaukumiem".
2. darbība. Dzēsiet visas rindas ar dublētiem nosaukumiem
Pēc "SQL" ievadiet "dzēst no nosaukumiem, kur name = 'Alan';." Jāatzīmē, ka lielo burtu lietojums šeit ir svarīgs, lai šis solis varētu izdzēst visas rindas ar nosaukumu "Alan". Pēc "SQL" ievadiet "veikt"
3. solis. Atkārtoti ievadiet rindas bez dublikātiem
Tagad, kad esat izdzēsis visas rindas un aizstājis tās ar "Alan", aizpildiet vienu no tām, ievadot "insert in name values ('Alan');." Pēc "SQL" ievadiet "saistīt", lai izveidotu jaunu rindu.
4. solis. Skatiet jauno sarakstu
Kad esat veicis iepriekš minētās darbības, varat pārbaudīt, vai vairs nav ierakstu dublikātu, ievadot "izvēlieties * no nosaukumiem".
SQL> izvēlieties vārdu no nosaukumiem; NAME ------------------------------ Alan Citra Tomi Alan Baris selected. SQL> dzēst no nosaukumiem, kur name = 'Alan'; Rinda tiek izdzēsta. SQL> apņemas; / Apņemšanās pabeigta. SQL> ievietojiet nosaukumos vērtības ('Alan'); rinda izveidota. SQL> apņemas; Apņemšanās pabeigta. SQL> izvēlieties * no nosaukumiem; NAME ------------------------------ Alan Citra Tomi rindas atlasītas.
3. metode no 4: vairāku dublikātu noņemšana
1. solis. Izvēlieties RowID, kuru vēlaties dzēst
Pēc "SQL" ievadiet "select rowid, name from names;."
2. darbība. Noņemiet dublikātus
Pēc "SQL" ievadiet "dzēst no nosaukumiem a kur rowid> (izvēlieties min (rowid) no nosaukumiem b kur b.name = a.name);" lai noņemtu dublikātus.
3. darbība. Pārbaudiet, vai nav dublikātu
Pēc iepriekš minēto darbību veikšanas pārbaudiet, vai nav dublikātu, ievadot "select rowid, name from names;" 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> apņemas; Apņemšanās pabeigta.
4. metode no 4: rindu dzēšana pēc kolonnām
1. solis. Atlasiet rindu
Pēc "SQL" ievadiet "select * from names;" lai varētu saskatīt līniju.
2. darbība. Noņemiet dublētās rindas, identificējot to slejas
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 noņemtu 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;" tad "apņemas" pārbaudīt, vai dublikāti tiešām ir noņemti.
SQL> izvēlieties * no nosaukumiem; VĀRDU VECUMS ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 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 ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 rindas atlasītas. SQL> apņemas; Apņemšanās pabeigta.
Brīdinājums
-
Savā pieteikumvārdā izveidojiet tabulas dublikātu, lai to varētu izmantot kā atsauci uz saturu, ja dati nav izdzēsti (ja jums rodas kādi jautājumi).
SQL> izveidot tabulu alan.names_backup kā izvēlieties * no nosaukumiem; Tabula izveidota.