Mens du jobber i Oracle, kan du finne duplikater på noen poster. Du kan fjerne dupliserte rader ved å identifisere dem og bruke den tilsvarende RowID -alias -radadressen. Før du starter, må du opprette en sikkerhetskopiertabell i tilfelle du trenger en referanse etter at posten er slettet.
Steg
Metode 1 av 4: Identifisering av dubletter
Trinn 1. Identifiser duplikater
I dette eksemplet identifiserer vi duplikatet "Alan". Sørg for at postene som skal slettes faktisk er dubletter ved å skrive inn SQL nedenfor.
Trinn 2. Identifiser fra kolonnen med tittelen "Navn"
Hvis kolonnen har tittelen "Navn", må du erstatte "kolonnenavn" med Navn.
Trinn 3. Identifiser de andre kolonnene
Hvis du prøver å identifisere duplikater fra forskjellige kolonner, for eksempel Alans alder i stedet for navnet hans, skriver du 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: Fjerne enkelt dubletter
Trinn 1. Velg "navn fra navn"
Etter "SQL" (forkortelse for Standard Query Language), skriv inn "velg navn fra navn".
Trinn 2. Slett alle radene med dupliserte navn
Etter "SQL" skriver du inn "delete from names where name = 'Alan';." Det bør bemerkes at store bokstaver er viktige her, slik at dette trinnet kan slette alle linjene som heter "Alan". Etter "SQL", skriv inn "commit"
Trinn 3. Angi rader på nytt uten duplikater
Nå som du har slettet alle radene og erstattet dem med "Alan", fyll ut en igjen ved å skrive inn "sett inn i navnverdier ('Alan');." Etter "SQL" skriver du inn "commit" for å opprette en ny linje.
Trinn 4. Se den nye listen
Etter å ha fullført trinnene ovenfor, kan du kontrollere at det ikke er flere dupliserte poster ved å skrive inn "velg * fra navn".
SQL> velg navn fra navn; NAVN ------------------------------ Alan Citra Tomi Alan Baris valgt. SQL> slett fra navn der name = 'Alan'; Linjen er slettet. SQL> forplikter; / Commit complete. SQL> sett inn verdier i navn ('Alan'); rad opprettet. SQL> forplikter; Forplikt deg fullført. SQL> velg * fra navn; NAVN ------------------------------ Alan Citra Tomi-rader valgt.
Metode 3 av 4: Fjerne flere duplikater
Trinn 1. Velg RowID du vil slette
Etter "SQL", skriv inn "velg rowid, navn fra navn;."
Trinn 2. Fjern duplikater
Etter "SQL", skriv inn "slett fra navn a hvor rowid> (velg min (rowid) fra navn b hvor b.name = a.name);" for å fjerne duplikater.
Trinn 3. Se etter duplikater
Etter å ha fullført trinnene ovenfor, se etter duplikater ved å skrive inn "velg rowid, navn fra navn;" deretter "forplikte".
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> forplikter; Forplikt deg fullført.
Metode 4 av 4: Slette rader etter kolonner
Trinn 1. Velg raden
Etter "SQL", skriv "velg * fra navn;" for å se linjen.
Trinn 2. Fjern dupliserte rader ved å identifisere kolonnene deres
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 å fjerne dupliserte poster.
Trinn 3. Se etter duplikater
Når du har fullført trinnene ovenfor, skriver du inn "velg * fra navn;" deretter "forplikte" seg til å se om duplikatene faktisk er fjernet.
SQL> velg * fra navn; NAVNALDER ------------------------------ ---------- Alan 50 Citra 51 Tomi 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 Citra 51 Tomi 52 rader valgt. SQL> forplikter; Forplikt deg fullført.
Advarsel
-
Lag en duplikatbord i påloggingen din, slik at den kan brukes som en innholdsreferanse når ingen data er slettet (hvis du har spørsmål).
SQL> opprett tabell alan.names_backup som velg * fra navn; Tabellen er opprettet.