Mentre lavori in Oracle, puoi trovare duplicati su alcuni record. È possibile rimuovere le righe duplicate identificandole e utilizzando l'indirizzo di riga alias RowID corrispondente. Prima di iniziare, crea una tabella di backup nel caso in cui sia necessario un riferimento dopo l'eliminazione del record.
Fare un passo
Metodo 1 di 4: Identificazione dei duplicati
Passaggio 1. Identifica i duplicati
In questo esempio, identifichiamo il duplicato "Alan". Assicurati che i record da eliminare siano effettivamente duplicati inserendo l'SQL di seguito.
Passaggio 2. Identifica dalla colonna intitolata "Nome"
Nel caso in cui la colonna abbia il titolo "Nome", è necessario sostituire "nome_colonna" con Nome.
Passaggio 3. Identificare le altre colonne
Se stai cercando di identificare i duplicati di colonne diverse, ad esempio l'età di Alan invece del suo nome, inserisci "Età" al posto di " nome_colonna " e così via.
seleziona nome_colonna, conteggio (nome_colonna) dal gruppo di tabelle per nome_colonna con conteggio (nome_colonna) > 1;
Metodo 2 di 4: Rimozione di singoli duplicati
Passaggio 1. Seleziona "nome dai nomi"
Dopo "SQL" (abbreviazione di Standard Query Language), inserisci "seleziona nome dai nomi".
Passo 2. Elimina tutte le righe con nomi duplicati
Dopo "SQL", inserisci " delete from names where name ='Alan';." Va notato che le maiuscole sono importanti qui in modo che questo passaggio possa eliminare tutte le righe denominate "Alan". Dopo "SQL", inserisci "commit"
Passaggio 3. Reinserire le righe senza duplicati
Ora che hai cancellato tutte le righe e le hai sostituite con "Alan", riempine una di nuovo inserendo " inserisci nei valori del nome ('Alan');." Dopo "SQL", inserisci "commit" per creare una nuova riga.
Passaggio 4. Visualizza il nuovo elenco
Dopo aver completato i passaggi precedenti, puoi verificare che non ci siano più record duplicati inserendo " seleziona * dai nomi ".
SQL > seleziona il nome dai nomi; NOME ---------------- Alan Citra Tomi Alan Baris selezionato. SQL > elimina dai nomi dove name='Alan'; La riga viene eliminata. SQL > commit; \Commit completato. SQL > inserisci nei nomi i valori ('Alan'); riga creata. SQL > commit; Impegno completato. SQL > seleziona * dai nomi; NOME ---------------- Alan Citra Tomi righe selezionate.
Metodo 3 di 4: Rimozione di più duplicati
Passaggio 1. Selezionare l'ID riga che si desidera eliminare
Dopo "SQL", inserisci " select rowid, name from names;."
Passaggio 2. Rimuovi i duplicati
Dopo "SQL", inserisci " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);" per rimuovere i duplicati.
Passaggio 3. Verifica la presenza di duplicati
Dopo aver completato i passaggi precedenti, verifica la presenza di duplicati inserendo " select rowid, name from names;" quindi "impegnarsi".
SQL > seleziona rowid, nome dai nomi; NOME RIGA ------------------- ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan righe selezionate. SQL > elimina dai nomi a dove rowid > (seleziona min(rowid) dai nomi b dove b.name=a.name); righe eliminate. SQL > seleziona rowid, nome dai nomi; NOME RIGA --------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Tom righe selezionate. SQL > commit; Impegno completato.
Metodo 4 di 4: Eliminazione di righe per colonne
Passaggio 1. Selezionare la riga
Dopo "SQL", inserisci " seleziona * dai nomi;" per poter vedere la linea.
Passo 2. Rimuovi le righe duplicate identificando le loro colonne
Dopo "SQL'" inserisci " delete from names a where rowid > (select min(rowid) from names b where b.name=a.name e b.age=a.age);" per rimuovere i record duplicati.
Passaggio 3. Verifica la presenza di duplicati
Una volta completati i passaggi precedenti, inserisci " seleziona * dai nomi;" quindi "commit" per vedere se i duplicati sono stati effettivamente rimossi.
SQL > seleziona * dai nomi; NOME ETÀ ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 Alan 50 righe selezionate. SQL > elimina dai nomi a dove rowid > (seleziona min(rowid) dai nomi b dove b.name=a.name e b.age=a.age); riga eliminata. SQL > seleziona * dai nomi; NOME ETÀ ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 righe selezionate. SQL > commit; Impegno completato.
Avvertimento
-
Crea una tabella duplicata nel tuo login in modo che possa essere utilizzata come riferimento al contenuto quando nessun dato è stato cancellato (in caso di domande).
SQL > crea tabella alan.names_backup come select * from names; Tabella creata.