4 maneres de suprimir registres duplicats a Oracle

Taula de continguts:

4 maneres de suprimir registres duplicats a Oracle
4 maneres de suprimir registres duplicats a Oracle

Vídeo: 4 maneres de suprimir registres duplicats a Oracle

Vídeo: 4 maneres de suprimir registres duplicats a Oracle
Vídeo: 30 глупых вопросов Product Manager [Карьера в IT] 2024, Desembre
Anonim

Mentre treballeu a Oracle, podeu trobar duplicats en alguns registres. Podeu eliminar files duplicades identificant-les i utilitzant l'adreça de fila de l'àlies RowID corresponent. Abans de començar, creeu una taula de còpia de seguretat per si necessiteu una referència després de suprimir el registre.

Pas

Mètode 1 de 4: identificació de duplicats

Suprimiu registres duplicats a l'Oracle Pas 1
Suprimiu registres duplicats a l'Oracle Pas 1

Pas 1. Identifiqueu els duplicats

En aquest exemple, identifiquem el duplicat "Alan". Introduïu el codi SQL següent per assegurar-vos que els registres a suprimir siguin duplicats.

Suprimiu registres duplicats al pas 2 d'Oracle
Suprimiu registres duplicats al pas 2 d'Oracle

Pas 2. Identifiqueu-lo a la columna titulada "Nom"

En cas que la columna tingui el títol "Nom", haureu de substituir "nom_colonna" per Nom.

Suprimiu els registres duplicats al pas 3 d'Oracle
Suprimiu els registres duplicats al pas 3 d'Oracle

Pas 3. Identifiqueu les altres columnes

Si esteu intentant identificar duplicats de diferents columnes, per exemple l'edat d'Alan en lloc del seu nom, introduïu "Edat" en lloc de "nom_colonna", etc.

seleccioneu column_name, count (column_name) del grup de taules per column_name que té count (column_name)> 1;

Mètode 2 de 4: eliminació de duplicats individuals

Suprimiu registres duplicats a l'Oracle Pas 4
Suprimiu registres duplicats a l'Oracle Pas 4

Pas 1. Seleccioneu "nom entre noms"

Després de "SQL" (abreviatura de Standard Query Language), introduïu "select name from names".

Suprimiu registres duplicats a l'Oracle Pas 5
Suprimiu registres duplicats a l'Oracle Pas 5

Pas 2. Suprimiu totes les files amb noms duplicats

Després de "SQL", introduïu "elimina dels noms on name = 'Alan';." Cal tenir en compte que aquí és important la capitalització perquè aquest pas pugui suprimir totes les línies anomenades "Alan". Després de "SQL", introduïu "commit"

Suprimiu registres duplicats a l'Oracle Pas 6
Suprimiu registres duplicats a l'Oracle Pas 6

Pas 3. Torneu a introduir files sense duplicats

Ara que heu esborrat totes les files i les heu substituït per "Alan", empleneu-ne una de nou introduint "inseriu en valors de nom (" Alan ");" Després de "SQL", introduïu "commit" per crear una nova línia.

Suprimiu registres duplicats a l'Oracle Pas 7
Suprimiu registres duplicats a l'Oracle Pas 7

Pas 4. Visualitzeu la llista nova

Després de completar els passos anteriors, podeu comprovar que no hi hagi més registres duplicats introduint "seleccioneu * entre noms".

SQL> seleccioneu el nom dels noms; NOM ------------------------------ Alan Citra Tomi Alan Baris seleccionat. SQL> esborra de noms on name = 'Alan'; La línia se suprimeix. SQL> commits; / Commit completat. SQL> insereix valors de noms ('Alan'); fila creada. SQL> commits; S'ha completat el compromís. SQL> seleccioneu * dels noms; NOM ------------------------------ S'han seleccionat les files d'Alan Citra Tomi.

Mètode 3 de 4: suprimir diversos duplicats

Suprimiu registres duplicats a l'Oracle Pas 8
Suprimiu registres duplicats a l'Oracle Pas 8

Pas 1. Seleccioneu el RowID que voleu suprimir

Després de "SQL", introduïu "select rowid, name from names;."

Suprimiu registres duplicats a l'Oracle Pas 9
Suprimiu registres duplicats a l'Oracle Pas 9

Pas 2. Elimineu els duplicats

Després de "SQL", introduïu "elimina dels noms a on rowid> (seleccioneu min (rowid) dels noms b on b.name = a.name);" per eliminar duplicats.

Suprimiu registres duplicats a l'Oracle Pas 10
Suprimiu registres duplicats a l'Oracle Pas 10

Pas 3. Comproveu si hi ha duplicats

Després de completar els passos anteriors, comproveu si hi ha duplicats introduint "select rowid, name from names;" després "cometeu".

SQL> seleccioneu rowid, nom entre noms; NOM ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan files selected. SQL> esborra dels noms a where rowid> (seleccioneu min (rowid) dels noms b on b.name = a.name); files eliminades. SQL> seleccioneu rowid, nom entre noms; NOM ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Files Tom seleccionades. SQL> commits; S'ha completat el compromís.

Mètode 4 de 4: supressió de files per columnes

Suprimiu registres duplicats a l'Oracle Pas 11
Suprimiu registres duplicats a l'Oracle Pas 11

Pas 1. Seleccioneu la fila

Després de "SQL", introduïu "seleccioneu * entre els noms;" per poder veure la línia.

Suprimiu registres duplicats a l'Oracle Pas 12
Suprimiu registres duplicats a l'Oracle Pas 12

Pas 2. Traieu les files duplicades identificant-ne les columnes

Després de "SQL", introduïu "elimineu dels noms a on rowid> (seleccioneu min (rowid) dels noms b on b.name = a.name i b.age = a.age);" per eliminar registres duplicats.

Suprimiu registres duplicats a l'Oracle Pas 13
Suprimiu registres duplicats a l'Oracle Pas 13

Pas 3. Comproveu si hi ha duplicats

Un cop hàgiu completat els passos anteriors, introduïu "select * from names;" després "confieu" per veure si els duplicats s'han eliminat realment.

SQL> seleccioneu * dels noms; NOM EDAT ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 files seleccionades. SQL> esborra dels noms a where rowid> (seleccioneu min (rowid) dels noms b on b.name = a.name i b.age = a.age); fila suprimida. SQL> seleccioneu * dels noms; NOM EDAT ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 files seleccionades. SQL> commits; S'ha completat el compromís.

Advertiment

  • Creeu una taula duplicada al vostre inici de sessió perquè es pugui utilitzar com a referència de contingut quan no s'hagin suprimit cap dada (per si teniu cap pregunta).

    SQL> crea la taula alan.names_backup com a selecció * dels noms; Taula creada.

Recomanat: