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: 8 easy ways to improve your product photography for your online store 2024, Mei
Anonim

Wanneer u in Oracle werkt, kan het zijn dat sommige van uw records dubbele gegevens bevatten. U kunt deze dubbele rijen verwijderen door ze te identificeren en de RowID of het rijadres te gebruiken. Voordat u begint, moet u een back-uptabel maken voor het geval u ernaar moet verwijzen nadat u records hebt verwijderd.

Stappen

Methode 1 van 4: Uw duplicaat identificeren

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

Stap 1. Identificeer het duplicaat

Identificeer in dit geval het voorbeeldduplicaat, 'Alan'. Zorg ervoor dat de records die u probeert te verwijderen, daadwerkelijk duplicaten zijn door de onderstaande SQL in te voeren.

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

Stap 2. Identificeren vanuit een kolom met de naam "Namen

"In het geval van een kolom met de naam "Namen", zou u "column_name" vervangen door Namen.

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

Stap 3. Identificeren vanuit andere kolommen

Als u het duplicaat probeerde te identificeren aan de hand van een andere kolom, bijvoorbeeld de leeftijd van Alan in plaats van zijn naam, zou u "Leeftijden" invoeren in de plaats van "kolomnaam" enzovoort.

selecteer kolomnaam, aantal (kolomnaam) uit tabelgroep op kolomnaam met telling (kolomnaam)> 1;

Methode 2 van 4: Een enkel duplicaat verwijderen

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

Stap 1. Selecteer "naam uit namen

"Na "SQL", wat staat voor Standard Query Language, voert u "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 de dubbele naam

Voer na "SQL" "delete from names where name='Alan';" in. Merk op dat hoofdlettergebruik hier belangrijk is, dus hiermee worden alle rijen met de naam "Alan" verwijderd. Voer na "SQL" "commit" in.

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

Stap 3. Huur de rij zonder een duplicaat

Nu u alle rijen met de voorbeeldnaam "Alan" hebt verwijderd, kunt u er een terug invoegen door "insert in name values ('Alan');." Voer na "SQL" "commit" in om uw nieuwe rij te maken.

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

Stap 4. Bekijk je nieuwe lijst

Nadat u de bovenstaande stappen heeft voltooid, kunt u controleren of u geen dubbele records meer heeft door "selecteer * uit namen" in te voeren.

SQL > selecteer naam uit namen; NAAM ------------------------------ Alan Carrie Tom Alan rijen geselecteerd. SQL > verwijderen uit namen waar naam='Alan'; rijen verwijderd. SQL > vastleggen; Commit compleet. SQL > waarden invoegen in namen ('Alan'); rij gemaakt. SQL > vastleggen; Commit compleet. SQL > selecteer * uit namen; NAAM ------------------------------ Alan Carrie Tom-rijen geselecteerd.

Methode 3 van 4: Meerdere duplicaten verwijderen

Verwijder dubbele records in Oracle Stap 8
Verwijder dubbele records in Oracle Stap 8

Stap 1. Selecteer de RowID die u wilt verwijderen

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

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

Stap 2. Verwijder het duplicaat

Voer na "SQL" "verwijderen uit namen a waar rowid > (selecteer min(rowid) uit namen b waarbij b.name=a.name);" om dubbele records te verwijderen.

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

Stap 3. Controleer op duplicaten

Nadat u het bovenstaande hebt voltooid, controleren de opdrachten om te zien of u nog steeds dubbele records heeft door "select rowid, naam uit namen;" in te voeren. en dan "toezeggen".

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 > vastleggen; Commit compleet.

Methode 4 van 4: Rijen met kolommen verwijderen

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

Stap 1. Selecteer je rijen

Voer na "SQL" "select * from names" in; om je rijen te zien.

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

Stap 2. Verwijder dubbele rijen door hun kolom 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. om de 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. en vervolgens "vastleggen" om te controleren of u de dubbele records met succes hebt verwijderd.

SQL > selecteer * uit namen; NAAM LEEFTIJD ------------------------------ ---------- Alan 50 Carrie 51 Tom 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 Carrie 51 Tom 52 rijen geselecteerd. SQL > vastleggen; Commit compleet.

Waarschuwingen

  • Maak een back-uptabel in uw eigen aanmelding die u kunt gebruiken om te laten zien wat er was voordat er een verwijdering plaatsvond (voor het geval er vragen zijn).

    SQL > maak tabel alan.names_backup als selecteer * uit namen; Tabel gemaakt.

Aanbevolen: