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
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.
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.
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
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 ".
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".
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.
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
Steg 1. Välj det RowID du vill ta bort
Efter "SQL" anger du "välj rowid, namn från namn;."
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.
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
Steg 1. Välj dina rader
Efter "SQL" anger du "välj * från namn;" för att se dina rader.
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.
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.