
Se si utilizza Oracle Database, un problema comune è duplicare le righe nelle tabelle. Di solito questo succede quando unici vincoli sono rimossi durante il carico. Qualunque sia il motivo, è possibile rimuovere i record duplicati. Duplica record hanno valori identici per tutte le colonne (o le colonne che fanno parte della chiave unica).
Non vi è più di un modo per eliminare i record duplicati. Supponiamo Table_A ha i seguenti dati:
Col1 col2
------ -------
101 201
102 202
103 203
102 202
104 204
101 201
Vediamo il primo metodo.
- Backup tavola originale. Questo è il passo più importante!
- Assicurarsi che il backup è buono e si può ripristinare la tabella originale, se necessario.
- Ecco il codice per eliminare i record duplicati:
DELETE FROM Table_A uno
DOVE ROWID! = (SELECT MAX (ROWID)
DA Table_A b
DOVE b.col1 = a.col1
E b.col2 = a.col2);Oracle è uno pseudo colonna denominata "ROWID", che è univoco per ogni riga in una tabella. Così siamo in grado di utilizzarlo per eliminare i record duplicati. Il codice sopra troveranno solo uno ROWID per non duplicare le registrazioni. Per duplicare le registrazioni, che sarà eliminare un record con il più basso ROWID. Se ci sono più di due colonne che compongono unica chiave per un record, allora si dovrebbe includere tutte quelle colonne DOVE condizione. Ci sono due documenti in duplice copia l'esempio, non importa che abbiamo cancellato dal registro tutte le colonne hanno gli stessi valori.
- Verificare i risultati e impegnare il vostro lavoro.
Ora diamo un'occhiata a un secondo metodo.
- Backup originale tavola. Questo è ancora il passo più importante!
- Assicurarsi che il backup è buono e si può ripristinare la tabella originale, se necessario.
- Creare una tabella temporanea con record unici utilizzando DISTINTE clausola.
- Elimina tutti i record dalla tabella originale.
- Inserire tutti i record dalla tabella temporanea nella tabella originale.
- Verificare i risultati e impegnare il vostro lavoro.
A seconda della vostra situazione, è possibile scegliere uno dei due metodi per ottenere risultati più rapidamente. Duplica record può essere evitata utilizzando Unico Indexes. Unico Indici colonne all'interno di garanzia che l'indice non hanno valori duplicati.

Delicious
Digg
Google
Yahoo