4 manieren om dubbele records in Oracle te verwijderen

Inhoudsopgave:

4 manieren om dubbele records in Oracle te verwijderen
4 manieren om dubbele records in Oracle te verwijderen

Video: 4 manieren om dubbele records in Oracle te verwijderen

Video: 4 manieren om dubbele records in Oracle te verwijderen
Video: The 4 MUST-HAVE ChatGPT & AI Tools For Excel - Free Download + Training 2024, Mei
Anonim

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

Verwijder dubbele records in Oracle Stap 1
Verwijder dubbele records in Oracle Stap 1

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.

Verwijder dubbele records in Oracle Stap 2
Verwijder dubbele records in Oracle Stap 2

Stap 2. Identificeer uit de kolom met de titel "Naam"

Als de kolom de titel "Naam" heeft, moet u " column_name " vervangen door Naam.

Verwijder dubbele records in Oracle Stap 3
Verwijder dubbele records in Oracle Stap 3

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

Verwijder dubbele records in Oracle Stap 4
Verwijder dubbele records in Oracle Stap 4

Stap 1. Selecteer "naam uit namen"

Voer na "SQL" (afkorting van Standard Query Language) "select name from names" in.

Verwijder dubbele records in Oracle Stap 5
Verwijder dubbele records in Oracle Stap 5

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

Verwijder dubbele records in Oracle Stap 6
Verwijder dubbele records in Oracle Stap 6

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.

Verwijder dubbele records in Oracle Stap 7
Verwijder dubbele records in Oracle Stap 7

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

Dubbele records verwijderen in Oracle Stap 8
Dubbele records verwijderen in Oracle Stap 8

Stap 1. Selecteer de RowID die u wilt verwijderen

Voer na "SQL" " select rowid, name from names;."

Verwijder dubbele records in Oracle Stap 9
Verwijder dubbele records in Oracle Stap 9

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.

Dubbele records verwijderen in Oracle Stap 10
Dubbele records verwijderen in Oracle Stap 10

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

Dubbele records verwijderen in Oracle Stap 11
Dubbele records verwijderen in Oracle Stap 11

Stap 1. Selecteer de rij

Voer na "SQL" " select * from names;" in om de lijn te kunnen zien.

Dubbele records verwijderen in Oracle Stap 12
Dubbele records verwijderen in Oracle Stap 12

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.

Dubbele records verwijderen in Oracle Stap 13
Dubbele records verwijderen in Oracle Stap 13

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.

Aanbevolen: