Pdf downloaden
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.
Stappen
-
Identificeer het duplicaat. 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.
-
Zoek in een kolom 'Namen'. In het geval van een kolom 'Namen', vul je die in voor 'column_name'.
-
Zoek in andere kolommen. 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
-
Selecteer 'names from names'. Na 'SQL' (Standard Query Language) typ je 'select name from names'.
-
Verwijder alle rijen met de dubbele naam. 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] X Bron
-
Voer de rij weer in zonder een duplicaat. 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.
-
Bekijk je nieuwe lijst. 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
-
Selecteer het rijadres (row-id) dat je wilt verwijderen. Na 'SQL' typ je 'select rowid, name from names;'.
-
Verwijder het duplicaat. 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] X Bron
-
Controleer op duplicaten. 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
-
Selecteer de rijen. Na 'SQL' typ je 'select *from names;' om de gekozen rijen te zien.
-
Verwijder dubbele rijen door hun kolom te identificeren. 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] X Bron
-
Controleer op duplicaten. 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
Bronnen
Advertentie