Quando lavori in Oracle, potresti scoprire che alcuni dei tuoi record hanno duplicati. Puoi eliminare queste righe duplicate identificandole e utilizzando il relativo RowID o indirizzo di riga. Prima di iniziare, è necessario creare una tabella di backup nel caso sia necessario farvi riferimento dopo aver eliminato i record.
Passi
Metodo 1 di 4: Identificazione del tuo duplicato
Passaggio 1. Identificare il duplicato
In questo caso, identifica il duplicato di esempio, "Alan". Assicurati che i record che stai tentando di eliminare siano effettivamente duplicati inserendo l'SQL di seguito.
Passaggio 2. Identificazione da una colonna denominata "Nomi
"Nell'istanza di una colonna denominata "Nomi, " sostituiresti "nome_colonna" con Nomi.
Passaggio 3. Identificazione da altre colonne
Se stavi cercando di identificare il duplicato con una colonna diversa, ad esempio l'età di Alan anziché il suo nome, dovresti inserire "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: Eliminazione di un singolo duplicato
Passaggio 1. Seleziona "nome dai nomi
"Dopo "SQL", che sta per Standard Query Language, inserisci "seleziona nome dai nomi".
Passo 2. Elimina tutte le righe con il nome duplicato
Dopo "SQL", inserisci "cancella dai nomi dove nome='Alan';." Nota che le maiuscole sono importanti qui, quindi verranno eliminate tutte le righe denominate "Alan". Dopo "SQL", inserisci "commit".
Passaggio 3. Affittare la riga senza duplicati
Ora che hai cancellato tutte le righe con il nome di esempio "Alan", puoi inserirne una di nuovo inserendo "inserisci nei valori del nome ('Alan');." Dopo "SQL", inserisci "commit" per creare la tua nuova riga.
Passaggio 4. Visualizza il tuo nuovo elenco
Una volta completati i passaggi precedenti, puoi verificare di non avere più record duplicati inserendo "seleziona * dai nomi".
SQL > seleziona il nome dai nomi; NOME ---------------- Alan Carrie Tom Alan righe selezionate. SQL > elimina dai nomi dove name='Alan'; righe eliminate. SQL > commit; Impegno completato. SQL > inserisci nei nomi i valori ('Alan'); riga creata. SQL > commit; Impegno completato. SQL > seleziona * dai nomi; NOME ---------------- Alan Carrie Tom righe selezionate.
Metodo 3 di 4: Eliminazione di più duplicati
Passaggio 1. Selezionare l'ID riga che si desidera eliminare
Dopo "SQL", inserisci "select rowid, name from names;."
Passaggio 2. Elimina il duplicato
Dopo "SQL," inserisci "cancella dai nomi a dove idriga > (seleziona min(idriga) dai nomi b dove b.nome=a.nome);" per eliminare i record duplicati.
Passaggio 3. Verifica la presenza di duplicati
Dopo aver completato quanto sopra, i comandi controllano se hai ancora record duplicati inserendo "select rowid, name from names;" e poi "impegnati".
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 con colonne
Passaggio 1. Seleziona le tue righe
Dopo "SQL", inserisci "seleziona * dai nomi;" per vedere le tue righe.
Passo 2. Elimina le righe duplicate identificando la loro colonna
Dopo "SQL'" inserisci "cancella dai nomi a dove rowid > (seleziona min(rowid) dai nomi b dove b.name=a.name e b.age=a.age);" per eliminare i record duplicati.
Passaggio 3. Verifica la presenza di duplicati
Una volta completati i passaggi precedenti, inserisci "seleziona * dai nomi;" e quindi "conferma" per verificare di aver eliminato correttamente i record duplicati.
SQL > seleziona * dai nomi; NOME ETÀ ------------------------------ ---------- Alan 50 Carrie 51 Tom 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 Carrie 51 Tom 52 righe selezionate. SQL > commit; Impegno completato.
Avvertenze
-
Crea una tabella di backup nel tuo accesso che puoi utilizzare per mostrare cosa c'era prima che si verificasse l'eliminazione (in caso di domande).
SQL > crea tabella alan.names_backup come select * from names; Tabella creata.