Terwijl u in Oracle werkt, kunt u op sommige records duplicaten vinden. U kunt dubbele rijen verwijderen door ze te identificeren en het bijbehorende rij-adres RowID-alias te gebruiken. Maak voordat u begint een back-uptabel voor het geval u een verwijzing nodig heeft nadat het record is verwijderd.
Stap
Methode 1 van 4: Duplicaten identificeren
Stap 1. Identificeer duplicaten
In dit voorbeeld identificeren we het duplicaat "Alan". Zorg ervoor dat de te verwijderen records inderdaad duplicaten zijn door onderstaande SQL in te voeren.
Stap 2. Identificeer uit de kolom met de titel "Naam"
Als de kolom de titel "Naam" heeft, moet u " column_name " vervangen door Naam.
Stap 3. Identificeer de andere kolommen
Als u duplicaten uit verschillende kolommen probeert te identificeren, bijvoorbeeld Alan's leeftijd in plaats van zijn naam, voer dan "Leeftijd" in in plaats van " column_name " enzovoort.
selecteer kolomnaam, aantal (kolomnaam) uit tabelgroep op kolomnaam met telling (kolomnaam)> 1;
Methode 2 van 4: Enkele duplicaten verwijderen
Stap 1. Selecteer "naam uit namen"
Voer na "SQL" (afkorting van Standard Query Language) "select name from names" in.
Stap 2. Verwijder alle rijen met dubbele namen
Voer na "SQL" " delete from names where name ='Alan';." Opgemerkt moet worden dat hoofdlettergebruik hier belangrijk is, zodat deze stap alle regels met de naam "Alan" kan verwijderen. Voer na "SQL" "vastleggen" in
Stap 3. Voer rijen opnieuw in zonder duplicaten
Nu je alle rijen hebt verwijderd en ze hebt vervangen door "Alan", vul je er een opnieuw in door " insert into name values ('Alan');." Voer na "SQL" " commit " in om een nieuwe regel te maken.
Stap 4. Bekijk de nieuwe lijst
Na het voltooien van de bovenstaande stappen, kunt u controleren of er geen dubbele records meer zijn door "select * from names" in te voeren.
SQL > selecteer naam uit namen; NAAM ------------------------------ Alan Citra Tomi Alan Baris geselecteerd. SQL > verwijderen uit namen waar naam='Alan'; De regel wordt verwijderd. SQL > commits; \Commit voltooid. SQL > invoegen in namen waarden('Alan'); rij gemaakt. SQL > commits; Commit compleet. SQL > selecteer * uit namen; NAAM ------------------------------ Alan Citra Tomi rijen geselecteerd.
Methode 3 van 4: Meerdere duplicaten verwijderen
Stap 1. Selecteer de RowID die u wilt verwijderen
Voer na "SQL" " select rowid, name from names;."
Stap 2. Verwijder duplicaten
Voer na "SQL" " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);" in om duplicaten te verwijderen.
Stap 3. Controleer op duplicaten
Controleer na het voltooien van de bovenstaande stappen op duplicaten door "select rowid, name from names;" in te voeren. dan "beloven".
SQL > selecteer rowid, naam uit namen; ROWID NAAM ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan rijen geselecteerd. SQL > verwijder uit namen a waar rowid > (selecteer min(rowid) uit namen b waar b.name=a.name); rijen verwijderd. SQL > selecteer rowid, naam uit namen; ROWID NAAM ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom rijen geselecteerd. SQL > commits; Commit compleet.
Methode 4 van 4: Rijen per kolom verwijderen
Stap 1. Selecteer de rij
Voer na "SQL" " select * from names;" in om de lijn te kunnen zien.
Stap 2. Verwijder dubbele rijen door hun kolommen te identificeren
Voer na "SQL'" " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name and b.age=a.age);" in. dubbele records te verwijderen.
Stap 3. Controleer op duplicaten
Nadat u de bovenstaande stappen hebt voltooid, voert u " select * from names;" in dan " commit " om te zien of de duplicaten daadwerkelijk zijn verwijderd.
SQL > selecteer * uit namen; NAAM LEEFTIJD ------------------------------ --------- Alan 50 Citra 51 Tomi 52 Alan 50 rijen geselecteerd. SQL > verwijder uit namen a waar rowid > (selecteer min(rowid) uit namen b waar b.name=a.name en b.age=a.age); rij verwijderd. SQL > selecteer * uit namen; NAAM LEEFTIJD ------------------------------ --------- Alan 50 Citra 51 Tomi 52 rijen geselecteerd. SQL > commits; Commit compleet.
Waarschuwing
-
Maak een dubbele tabel in uw login zodat deze kan worden gebruikt als inhoudsreferentie wanneer er geen gegevens zijn verwijderd (voor het geval u vragen heeft).
SQL > maak tabel alan.names_backup als selecteer * uit namen; Tabel gemaakt.