4 sätt att ta bort dubbletter av poster i Oracle

Innehållsförteckning:

4 sätt att ta bort dubbletter av poster i Oracle
4 sätt att ta bort dubbletter av poster i Oracle

Video: 4 sätt att ta bort dubbletter av poster i Oracle

Video: 4 sätt att ta bort dubbletter av poster i Oracle
Video: BEST WAY TO STORE DIGITAL PHOTOS AND VIDEOS! 2024, Maj
Anonim

När du arbetar i Oracle kan du upptäcka att några av dina poster har dubbletter. Du kan ta bort dessa dubblettrader genom att identifiera dem och använda dess RowID- eller radadress. Innan du börjar bör du skapa en reservtabell om du behöver referera till dem efter att du har tagit bort poster.

Steg

Metod 1 av 4: Identifiera din dubblett

Ta bort dubbletter av poster i Oracle Steg 1
Ta bort dubbletter av poster i Oracle Steg 1

Steg 1. Identifiera duplikatet

I det här fallet identifierar du exemplaret "Alan". Se till att posterna du försöker ta bort faktiskt är dubbletter genom att ange SQL nedan.

Ta bort dubbla poster i Oracle Steg 2
Ta bort dubbla poster i Oracle Steg 2

Steg 2. Identifiera från en kolumn med namnet "Namn

"I förekomsten av en kolumn med namnet" Namn "skulle du ersätta" column_name "med Namn.

Ta bort dubbletter av poster i Oracle Steg 3
Ta bort dubbletter av poster i Oracle Steg 3

Steg 3. Identifiera från andra kolumner

Om du försökte identifiera duplikatet med en annan kolumn, till exempel Alans ålder snarare än hans namn, skulle du skriva "Ålder" i stället för "column_name" och så vidare.

välj column_name, count (column_name) från tabellgrupp efter column_name med count (column_name)> 1;

Metod 2 av 4: Ta bort en enda duplikat

Ta bort dubbletter av poster i Oracle Steg 4
Ta bort dubbletter av poster i Oracle Steg 4

Steg 1. Välj "namn från namn

"Efter" SQL ", som står för Standard Query Language, anger du" välj namn från namn ".

Ta bort dubbla poster i Oracle Steg 5
Ta bort dubbla poster i Oracle Steg 5

Steg 2. Radera alla rader med duplikatnamnet

Efter "SQL" anger du "ta bort från namn där name = 'Alan';." Observera att stora bokstäver är viktiga här, så detta raderar alla rader som heter "Alan". Efter "SQL" anger du "commit".

Ta bort dubbletter av poster i Oracle Steg 6
Ta bort dubbletter av poster i Oracle Steg 6

Steg 3. Hyr raden utan duplikat

Nu när du har tagit bort alla rader med exempelnamnet "Alan" kan du infoga en baksida genom att ange "infoga i namnvärden (" Alan ");." Efter "SQL" anger du "commit" för att skapa din nya rad.

Ta bort dubbletter av poster i Oracle Steg 7
Ta bort dubbletter av poster i Oracle Steg 7

Steg 4. Se din nya lista

När du har slutfört ovanstående steg kan du kontrollera att du inte längre har dubblettposter genom att ange "välj * från namn."

SQL> välj namn från namn; NAMN ------------------------------ Alan Carrie Tom Alan rader valda. SQL> ta bort från namn där namn = 'Alan'; rader raderade. SQL> begå; Begåra klart. SQL> infoga i namnvärden ('Alan'); rad skapad. SQL> begå; Begåra klart. SQL> välj * från namn; NAMN ------------------------------ Alan Carrie Tom rader valda.

Metod 3 av 4: Radera flera dubbletter

Ta bort dubbletter av poster i Oracle Steg 8
Ta bort dubbletter av poster i Oracle Steg 8

Steg 1. Välj det RowID du vill ta bort

Efter "SQL" anger du "välj rowid, namn från namn;."

Ta bort dubbletter av poster i Oracle Steg 9
Ta bort dubbletter av poster i Oracle Steg 9

Steg 2. Radera duplikatet

Efter "SQL" anger du "ta bort från namn a där rowid> (välj min (rowid) från namn b där b.name = a.name);" för att radera dubbletter.

Ta bort dubbletter av poster i Oracle Steg 10
Ta bort dubbletter av poster i Oracle Steg 10

Steg 3. Kontrollera om det finns dubbletter

När du har slutfört ovanstående kontrollerar kommandon om du fortfarande har dubblettposter genom att ange "välj rowid, namn från namn;" och sedan "begå".

SQL> välj rowid, namn från namn; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rader valda. SQL> ta bort från namn a där rowid> (välj min (rowid) från namn b där b.name = a.name); rader raderade. SQL> välj rowid, namn från namn; ROWID NAME ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom -rader markerade. SQL> begå; Begåra klart.

Metod 4 av 4: Radera rader med kolumner

Ta bort dubbletter av poster i Oracle Steg 11
Ta bort dubbletter av poster i Oracle Steg 11

Steg 1. Välj dina rader

Efter "SQL" anger du "välj * från namn;" för att se dina rader.

Ta bort dubbletter av poster i Oracle Steg 12
Ta bort dubbletter av poster i Oracle Steg 12

Steg 2. Radera dubblerade rader genom att identifiera deras kolumn

Efter "SQL" anger du "ta bort från namn a där rowid> (välj min (rowid) från namn b där b.name = a.name och b.age = a.age);" för att radera dubbletterna.

Ta bort dubbletter av poster i Oracle Steg 13
Ta bort dubbletter av poster i Oracle Steg 13

Steg 3. Kontrollera om det finns dubbletter

När du har slutfört ovanstående steg anger du "välj * från namn;" och sedan "begå" för att kontrollera att du har tagit bort dubblettposterna.

SQL> välj * från namn; NAME AGE ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 Alan 50 valda rader. SQL> radera från namn a där rowid> (välj min (rowid) från namn b där b.name = a.name och b.age = a.age); rad raderad. SQL> välj * från namn; NAME AGE ------------------------------ ---------- Alan 50 Carrie 51 Tom 52 rader valda. SQL> begå; Begåra klart.

Varningar

  • Skapa en reservtabell i din egen inloggning som du kan använda för att visa vad som fanns innan någon radering inträffade (om det finns några frågor).

    SQL> skapa tabell alan.names_backup som välj * från namn; Tabellen skapad.

Rekommenderad: