Quan treballeu a Oracle, és possible que alguns dels vostres registres tinguin duplicats. Podeu eliminar aquestes files duplicades identificant-les i utilitzant el seu RowID o adreça de fila. Abans de començar, heu de crear una taula de còpia de seguretat per si cal fer-ne referència després d’haver suprimit els registres.
Passos
Mètode 1 de 4: identificació del duplicat
Pas 1. Identifiqueu el duplicat
En aquest cas, identifiqueu l'exemple duplicat, "Alan". Assegureu-vos que els registres que esteu intentant suprimir són realment duplicats introduint l'SQL a continuació.
Pas 2. Identificació a partir d'una columna anomenada "Noms
"En el cas d'una columna anomenada" Noms ", substituireu" columna_nom "per Noms.
Pas 3. Identificació a partir d'altres columnes
Si intentéssiu identificar el duplicat amb una columna diferent, per exemple l'edat d'Alan en lloc del seu nom, introduïu "Edats" al lloc de "nom_columna", etc.
seleccioneu column_name, count (column_name) del grup de taules per column_name amb count (column_name)> 1;
Mètode 2 de 4: suprimir un sol duplicat
Pas 1. Seleccioneu "nom entre noms"
"Després de" SQL ", que significa" Idioma de consulta estàndard ", introduïu" seleccioneu el nom entre els noms ".
Pas 2. Suprimiu totes les files amb el nom duplicat
Després de "SQL", introduïu "elimina dels noms on name = 'Alan';." Tingueu en compte que aquí hi ha majúscules i majúscules, de manera que se suprimiran totes les files anomenades "Alan". Després de "SQL", introduïu "commit".
Pas 3. Llogueu la fila sense duplicat
Ara que heu suprimit totes les files amb el nom d'exemple "Alan", podeu inserir-ne una de nou si introduïu "inseriu en valors de nom (" Alan ");" Després de "SQL", introduïu "commit" per crear la vostra nova fila.
Pas 4. Vegeu la llista nova
Un cop hàgiu completat els passos anteriors, podeu comprovar que ja no teniu registres duplicats introduint "seleccioneu * entre els noms".
SQL> seleccioneu el nom dels noms; NOM ------------------------------ Alan Carrie Tom Alan files seleccionades. SQL> esborra de noms on name = 'Alan'; files eliminades. SQL> commit; S'ha completat el compromís. SQL> insereix valors de noms ('Alan'); fila creada. SQL> commit; S'ha completat el compromís. SQL> seleccioneu * dels noms; NOM ------------------------------ S'han seleccionat files d'Alan Carrie Tom.
Mètode 3 de 4: supressió de diversos duplicats
Pas 1. Seleccioneu el RowID que voleu suprimir
Després de "SQL", introduïu "seleccioneu rowid, nom entre noms;"
Pas 2. Suprimiu el duplicat
Després de "SQL", introduïu "elimina dels noms a on rowid> (seleccioneu min (rowid) dels noms b on b.name = a.name);" per suprimir registres duplicats.
Pas 3. Comproveu si hi ha duplicats
Un cop hàgiu completat l'anterior, les comandes comprovaran si encara teniu registres duplicats introduint "select rowid, name from names;" i després "cometre".
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 Tom files seleccionades. SQL> commit; S'ha completat el compromís.
Mètode 4 de 4: supressió de files amb columnes
Pas 1. Seleccioneu les files
Després de "SQL", introduïu "seleccioneu * dels noms;" per veure les vostres files.
Pas 2. Suprimiu les files duplicades identificant-ne la columna
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 suprimir els registres duplicats.
Pas 3. Comproveu si hi ha duplicats
Un cop hàgiu completat els passos anteriors, introduïu "seleccioneu * entre noms;" i després "confia" per comprovar que heu suprimit correctament els registres duplicats.
SQL> seleccioneu * dels noms; NOM EDAT ------------------------------ ---------- Alan 50 Carrie 51 Tom 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 Carrie 51 Tom 52 files seleccionades. SQL> commit; S'ha completat el compromís.
Advertiments
-
Creeu una taula de còpia de seguretat al vostre propi inici de sessió que pugueu utilitzar per mostrar què hi havia abans que es produís la supressió (en cas que hi hagi alguna pregunta).
SQL> crea la taula alan.names_backup com a selecció * dels noms; Taula creada.