Ta bort dubbletter av data i oracle

Om du arbetar i Oracle kan en del av dina data visas flera gånger. Du kan ta bort dessa dubbletter genom att identifiera dem och använda deras radadress. Innan du börjar, gör en kopia av tabellen ifall du behöver hänvisa till den efter att ha raderat data.

Steg

Metod 1 av 4: Upptäck dubbletter

Bild med titeln Ta bort dubbletter av poster i Oracle Steg 1
1. Identifiera dubbletten. I det här fallet identifierar du provdubbletten, "Alan". Se till att posterna du försöker ta bort faktiskt är dubbletter genom att ange SQL-kommandot nedan.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 2
2. Sök i en kolumn "Namn". I fallet med en kolumn "Namn", fyll i den för "kolumn_namn".
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 3
3. Sök i andra kolumner. Om du försöker hitta dubbletter i en annan kolumn, säg Alans ålder istället för hans namn, du kan sätta `Age` före `column_name` osv.
välj kolumnnamn, count(column_name) från tabellgruppen efter kolumnnamn som har count (column_name) > 1;

Metod 2 av 4: Ta bort en enda dubblett

Bild med titeln Ta bort dubbletter av poster i Oracle Steg 4
1. Välj "namn från namn". Efter `SQL` (Standard Query Language) skriv `välj namn från namn`.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 5
2. Ta bort alla rader med dubblettnamnet. Efter `SQL` skriver du `radera från namn där name=`Alan`;`. Observera att det är viktigt med versaler här, så detta tar bort alla rader med namnet "Alan". Skriv `commit` efter `SQL`.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 6
3. Gå in i raden igen utan en dubblett. Nu när du har raderat alla rader med exempelnamnet `Alan`, kan du lägga in en igen genom att ange `infoga i namnvärden (`Alan`);.` Efter `SQL` skriv `commit` för att skapa den nya raden.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 7
4. Kolla in din nya lista. När du har slutfört stegen ovan kan du kontrollera om du inte har dubbletter av data med kommandot "select *from names".
SQL > välj namn från namn; NAMN ------------------------------------ Alan Carrie Tom Alan rader markerade. SQL > ta bort från namn där name=`Alan`; rader raderade. SQL > begå; Förpliktelsen är klar. SQL > infoga i namn värden(`Alan`); rad skapad. SQL > begå; Förpliktelsen är klar. SQL > välj *från namn; NAMN ------------------------------------ Alan Carrie Tom rader valda.

Metod 3 av 4: Ta bort flera dubbletter

Bild med titeln Ta bort dubbletter av poster i Oracle Steg 8
1. Välj den radadress (rad-ID) du vill ta bort. Efter `SQL` skriv `välj rowid, namn från namn;`.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 9
2. Ta bort dubbletten. Efter `SQL` skriver du `radera från namnen a where rowid > (välj min(rovid) från namn b där b.namn=a.namn);` för att ta bort dubbletter av data.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 10
3. Kontrollera om det finns dubbletter. Efter att ha slutfört ovanstående, kontrollera om du fortfarande har dubbletter av data genom att skriva `välj rowid, namn från namn;` och sedan "begå".
SQL > välj rowid, namn från namn; ROWIDNAME ------------------ ---------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rader valda. SQL > ta bort från namn a where rowid > (välj min(rovid) från namn b där b.namn=a.namn ); rader raderade. SQL > välj rowid, namn från namn; ROWIDNAME ------------------ ---------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom rader valda. SQL > begå; Förpliktelsen är klar.

Metod 4 av 4: Ta bort rader med kolumner

Bild med titeln Ta bort dubbletter av poster i Oracle Steg 11
1. Välj raderna. Efter `SQL` skriv `välj *från namn;` för att se de valda raderna.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 12
2. Ta bort dubbletter av rader genom att identifiera deras kolumn. Efter `SQL` skriver du `radera från namnen a where rowid > (välj min(rovid) från namn b där b.namn=a.namn och b.ålder=a.ålder);` för att ta bort dubblettdata.
Bild med titeln Ta bort dubbletter av poster i Oracle Steg 13
3. Kontrollera om det finns dubbletter. När du har slutfört stegen ovan, skriv `select *from names;` och sedan `commit` för att kontrollera om du har tagit bort all dubblettdata.
SQL > välj *från namn; NAMNALDER ---------------------------------- ---------- Alan50 Carrie51 Tom52 Alan50 rader valda. SQL > ta bort från namn a where rowid > (välj min(rovid) från namn b där b.namn=a.namn och b.ålder=a.ålder ); rad raderad. SQL > välj *från namn; NAMNALDER ---------------------------------- ---------- Alan50 Carrie51 Tom52 rader valda. SQL > begå; Förpliktelsen är klar.

Varningar

  • Gör en säkerhetskopia av tabellen under din egen inloggning som du kan använda för att visa hur situationen var innan raderingen (ifall frågor ställs).
SQL > skapa tabell alan.names_backup som välj *från namn; Tabell skapad.

Оцените, пожалуйста статью