4 måter å slette dupliserte poster i Oracle

Innholdsfortegnelse:

4 måter å slette dupliserte poster i Oracle
4 måter å slette dupliserte poster i Oracle

Video: 4 måter å slette dupliserte poster i Oracle

Video: 4 måter å slette dupliserte poster i Oracle
Video: Заработайте $ 25,000, используя Microsoft БЕСПЛАТНО в качестве... 2024, Desember
Anonim

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

Slett dupliserte poster i Oracle Trinn 1
Slett dupliserte poster i Oracle Trinn 1

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.

Slett dupliserte poster i Oracle Trinn 2
Slett dupliserte poster i Oracle Trinn 2

Trinn 2. Identifiser fra kolonnen med tittelen "Navn"

Hvis kolonnen har tittelen "Navn", må du erstatte "kolonnenavn" med Navn.

Slett dupliserte poster i Oracle Trinn 3
Slett dupliserte poster i Oracle Trinn 3

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

Slett dupliserte poster i Oracle Trinn 4
Slett dupliserte poster i Oracle Trinn 4

Trinn 1. Velg "navn fra navn"

Etter "SQL" (forkortelse for Standard Query Language), skriv inn "velg navn fra navn".

Slett dupliserte poster i Oracle Trinn 5
Slett dupliserte poster i Oracle Trinn 5

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"

Slett dupliserte poster i Oracle Trinn 6
Slett dupliserte poster i Oracle Trinn 6

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.

Slett dupliserte poster i Oracle Trinn 7
Slett dupliserte poster i Oracle Trinn 7

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

Slett dupliserte poster i Oracle Trinn 8
Slett dupliserte poster i Oracle Trinn 8

Trinn 1. Velg RowID du vil slette

Etter "SQL", skriv inn "velg rowid, navn fra navn;."

Slett dupliserte poster i Oracle trinn 9
Slett dupliserte poster i Oracle trinn 9

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.

Slett dupliserte poster i Oracle Trinn 10
Slett dupliserte poster i Oracle Trinn 10

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

Slett dupliserte poster i Oracle Trinn 11
Slett dupliserte poster i Oracle Trinn 11

Trinn 1. Velg raden

Etter "SQL", skriv "velg * fra navn;" for å se linjen.

Slett dupliserte poster i Oracle Trinn 12
Slett dupliserte poster i Oracle Trinn 12

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.

Slett dupliserte poster i Oracle Trinn 13
Slett dupliserte poster i Oracle Trinn 13

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.

Anbefalt: