Når du jobber i Oracle, kan du oppdage at noen av postene dine har duplikater. Du kan slette disse dupliserte radene ved å identifisere dem og bruke RowID- eller radadressen. Før du begynner, bør du opprette en sikkerhetskopiertabell i tilfelle du trenger å referere til dem etter at du har slettet poster.
Trinn
Metode 1 av 4: Identifisere duplikatet ditt
Trinn 1. Identifiser duplikatet
I dette tilfellet identifiser duplikatet "Alan". Sørg for at postene du prøver å slette faktisk er dubletter ved å skrive inn SQL nedenfor.
Trinn 2. Identifisere fra en kolonne som heter "Navn
"I forekomsten av en kolonne som heter" Navn ", erstatter du" column_name "med Navn.
Trinn 3. Identifisering fra andre kolonner
Hvis du prøvde å identifisere duplikatet med en annen kolonne, for eksempel alderen til Alan i stedet for navnet hans, ville du skrive inn "Alder" i stedet for "column_name" og så videre.
velg column_name, count (column_name) fra tabellgruppe etter column_name med count (column_name)> 1;
Metode 2 av 4: Slette et enkelt duplikat
Trinn 1. Velg "navn fra navn
"Etter" SQL ", som står for Standard Query Language, skriver du inn" velg navn fra navn ".
Trinn 2. Slett alle radene med duplikatnavnet
Etter "SQL", skriv inn "slett fra navn der name = 'Alan';." Vær oppmerksom på at store bokstaver er viktige her, så dette vil slette alle radene som heter "Alan". Etter "SQL" skriver du inn "commit".
Trinn 3. Leie raden uten duplikat
Nå som du har slettet alle radene med eksempelnavnet "Alan", kan du sette inn en tilbake ved å skrive "sett inn i navnverdier ('Alan');." Etter "SQL" skriver du inn "commit" for å opprette den nye raden.
Trinn 4. Se din nye liste
Når du har fullført trinnene ovenfor, kan du kontrollere at du ikke lenger har dupliserte poster ved å skrive inn "velg * fra navn."
SQL> velg navn fra navn; NAVN ------------------------------ Alan Carrie Tom Alan rader valgt. SQL> slett fra navn der name = 'Alan'; rader slettet. SQL> commit; Forplikt deg fullført. SQL> sett inn verdier i navn ('Alan'); rad opprettet. SQL> commit; Forplikt deg fullført. SQL> velg * fra navn; NAVN ------------------------------ Alan Carrie Tom rader valgt.
Metode 3 av 4: Slette flere duplikater
Trinn 1. Velg RowID du vil slette
Etter "SQL", skriv inn "velg rowid, navn fra navn;."
Trinn 2. Slett duplikatet
Etter "SQL", skriv "slett fra navn a hvor rowid> (velg min (rowid) fra navn b hvor b.name = a.name);" for å slette dupliserte poster.
Trinn 3. Se etter duplikater
Etter at du har fullført ovenstående, kontrollerer kommandoene om du fortsatt har duplikatoppføringer ved å skrive inn "velg rowid, navn fra navn;" og deretter "forplikte seg".
SQL> velg rowid, navn fra navn; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rader valgt. SQL> slett fra navn a hvor rowid> (velg min (rowid) fra navn b hvor b.name = a.name); rader slettet. SQL> velg rowid, navn fra navn; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom -rader er valgt. SQL> commit; Forplikt deg fullført.
Metode 4 av 4: Slette rader med kolonner
Trinn 1. Velg radene dine
Etter "SQL", skriv "velg * fra navn;" for å se radene dine.
Trinn 2. Slett dupliserte rader ved å identifisere kolonnen
Etter "SQL", skriv inn "slett fra navn a hvor rowid> (velg min (rowid) fra navn b hvor b.name = a.name og b.age = a.age);" for å slette de dupliserte postene.
Trinn 3. Se etter duplikater
Når du har fullført trinnene ovenfor, skriver du inn "velg * fra navn;" og deretter "forplikte" for å kontrollere at du har slettet duplikatoppføringene.
SQL> velg * fra navn; NAVNALDER ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 rader valgt. SQL> slett fra navn a hvor rowid> (velg min (rowid) fra navn b hvor b.name = a.name og b.age = a.age); rad slettet. SQL> velg * fra navn; NAVNALDER ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 rader valgt. SQL> commit; Forplikt deg fullført.
Advarsler
-
Lag en sikkerhetskopitabell i din egen pålogging som du kan bruke til å vise hva som var der før sletting skjedde (i tilfelle det er spørsmål).
SQL> opprett tabell alan.names_backup som velg * fra navn; Tabellen er opprettet.