PDF download Pdf downloaden PDF download Pdf downloaden

Als je in Oracle werkt, kan het zijn dat sommige van je gegevens meerdere malen voorkomen. Je kunt deze duplicaten verwijderen door ze te identificeren en het rij-adres ervan te gebruiken. Voordat je begint, moet je een kopie van de tabel maken voor het geval dat je ze moet raadplegen nadat je de gegevens hebt verwijderd.

Methode 1
Methode 1 van 4:

Duplicaten opsporen

PDF download Pdf downloaden
  1. Identificeer in dit geval het voorbeeld-duplicaat, 'Alan'. Zorg ervoor dat de records die je probeert te verwijderen ook daadwerkelijk duplicaten zijn door de onderstaande SQL-opdracht in te voeren.
  2. In het geval van een kolom 'Namen', vul je die in voor 'column_name'.
  3. Als je probeert het duplicaten zoekt in een andere kolom, bijvoorbeeld de leeftijd van Alan in plaats van zijn naam, dan kun je 'Leeftijd' invullen voor 'column_name', enz.
     select 
     column_name 
     , 
     count 
     ( 
     column_name 
     ) 
     from 
     table 
     group 
     by 
     column_name 
     having 
     count 
     ( 
     column_name 
     ) 
     > 
     1 
     ; 
    
    Advertentie
Methode 2
Methode 2 van 4:

Een enkel duplicaat verwijderen

PDF download Pdf downloaden
  1. Na 'SQL' (Standard Query Language) typ je 'select name from names'.
  2. Na 'SQL' typ je 'delete from names where name='Alan';'. Merk op dat hoofdletters hier belangrijk zijn, dus zal dit alle rijen met de naam 'Alan' verwijderen. Typ 'commit' na 'SQL'. [1]
  3. Nu je alle rijen met de voorbeeldnaam 'Alan' hebt verwijderd, kun je er één terugplaatsen door het invoeren van 'insert into name values ('Alan');.' Na 'SQL' typ je 'commit' om de nieuwe rij te maken.
  4. Als je bovenstaande stappen hebt doorlopen, kun je controleren of je geen dubbele gegevens meer hebt met de opdracht 'select *from names'.
     SQL 
     > 
     select 
     name 
     from 
     names 
     ; 
     NAME 
     
    Alan Carrie Tom Alan rows selected . SQL > delete from names where name = 'Alan' ; rows deleted . SQL > commit ; Commit complete . SQL > insert into names values ( 'Alan' ); row created . SQL > commit ; Commit complete . SQL > select * from names ; NAME
    Alan Carrie Tom rows selected .
    Advertentie
Methode 3
Methode 3 van 4:

Meerdere duplicaten verwijderen

PDF download Pdf downloaden
  1. Na 'SQL' typ je 'select rowid, name from names;'.
  2. Na 'SQL' typ je 'delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);' om duplicaten van gegevens te verwijderen. [2]
  3. Nadat je het bovenstaande hebt voltooid, controleer je of je nog steeds dubbele gegevens hebt door het intypen van 'select rowid, name from names;' en daarna 'commit'.
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAB 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     AABJnsAAGAAAdfOAAF 
     Alan 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     ); 
     rows 
     deleted 
     . 
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    Advertentie
Methode 4
Methode 4 van 4:

Rijen met kolommen verwijderen

PDF download Pdf downloaden
  1. Na 'SQL' typ je 'select *from names;' om de gekozen rijen te zien.
  2. Na 'SQL' typ je 'delete from names a where rowid > (select min(rowid) from names b where b.name=a.name and b.age=a.age);' om de dubbele gegevens te verwijderen. [3]
  3. Als je de bovenstaande stappen hebt voltooid, typ je 'select *from names;' en daarna 'commit' om te controleren of je alle dubbele gegevens met succes hebt verwijderd.
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     Alan 
     50 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     and 
     b 
     . 
     age 
     = 
     a 
     . 
     age 
     ); 
     row 
     deleted 
     . 
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    Advertentie

Waarschuwingen

  • Maak een back-up van de tabel onder je eigen login die je kunt gebruiken om te laten zien hoe de situatie was voor het verwijderen (voor het geval er vragen worden gesteld).
     SQL 
     > 
     create 
     table 
     alan 
     . 
     names_backup 
     as 
     select 
     * 
     from 
     names 
     ; 
     Table 
     created 
     . 
    
Advertentie

Over dit artikel

Deze pagina is 1.818 keer bekeken.

Was dit artikel nuttig?

Advertentie