4 modi per eliminare i record duplicati in Oracle

Sommario:

4 modi per eliminare i record duplicati in Oracle
4 modi per eliminare i record duplicati in Oracle

Video: 4 modi per eliminare i record duplicati in Oracle

Video: 4 modi per eliminare i record duplicati in Oracle
Video: Come avere Microsoft OFFICE 365 GRATIS per SEMPRE Legalmente | Senza Crack o Licenze 2023 2024, Novembre
Anonim

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

Elimina i record duplicati in Oracle Passaggio 1
Elimina i record duplicati in Oracle Passaggio 1

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.

Elimina i record duplicati in Oracle Passaggio 2
Elimina i record duplicati in Oracle Passaggio 2

Passaggio 2. Identifica dalla colonna intitolata "Nome"

Nel caso in cui la colonna abbia il titolo "Nome", è necessario sostituire "nome_colonna" con Nome.

Elimina i record duplicati in Oracle Passaggio 3
Elimina i record duplicati in Oracle Passaggio 3

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

Elimina i record duplicati in Oracle Passaggio 4
Elimina i record duplicati in Oracle Passaggio 4

Passaggio 1. Seleziona "nome dai nomi"

Dopo "SQL" (abbreviazione di Standard Query Language), inserisci "seleziona nome dai nomi".

Elimina i record duplicati in Oracle Passaggio 5
Elimina i record duplicati in Oracle Passaggio 5

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"

Elimina i record duplicati in Oracle Passaggio 6
Elimina i record duplicati in Oracle Passaggio 6

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.

Elimina i record duplicati in Oracle Passaggio 7
Elimina i record duplicati in Oracle Passaggio 7

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

Elimina i record duplicati in Oracle Passaggio 8
Elimina i record duplicati in Oracle Passaggio 8

Passaggio 1. Selezionare l'ID riga che si desidera eliminare

Dopo "SQL", inserisci " select rowid, name from names;."

Elimina i record duplicati in Oracle Passaggio 9
Elimina i record duplicati in Oracle Passaggio 9

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.

Elimina i record duplicati in Oracle Passaggio 10
Elimina i record duplicati in Oracle Passaggio 10

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

Elimina i record duplicati in Oracle Passaggio 11
Elimina i record duplicati in Oracle Passaggio 11

Passaggio 1. Selezionare la riga

Dopo "SQL", inserisci " seleziona * dai nomi;" per poter vedere la linea.

Elimina i record duplicati in Oracle Passaggio 12
Elimina i record duplicati in Oracle Passaggio 12

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.

Elimina i record duplicati in Oracle Passaggio 13
Elimina i record duplicati in Oracle Passaggio 13

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.

Consigliato: