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
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.
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.
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
Pas 1. Seleccioneu "nom entre noms"
Després de "SQL" (abreviatura de Standard Query Language), introduïu "select name from names".
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"
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.
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
Pas 1. Seleccioneu el RowID que voleu suprimir
Després de "SQL", introduïu "select rowid, name from names;."
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.
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
Pas 1. Seleccioneu la fila
Després de "SQL", introduïu "seleccioneu * entre els noms;" per poder veure la línia.
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.
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.