Come eliminare duplicati SQL

May 28

Gli amministratori di database sanno che si verificano errori occasionali, e record duplicati vengono inseriti nel database. Il problema è un problema comune per gli amministratori per risolvere, ma l'eliminazione di record da un server SQL è una situazione delicata. L'amministratore è dato il compito di eliminazione di record senza rimuovere accidentalmente eventuali altri dati, che possono accadere facilmente se la query non è costruito in modo corretto. Scopri come eliminare i record duplicati in SQL preservando i documenti originali.

istruzione

1 Aprire Enterprise Manager per SQL Server. È necessario eseguire le query per verificare la presenza di contenuti duplicati. Essa vi darà anche un'idea di quanti record devono essere eliminati. query di grandi dimensioni possono richiedere di far cadere il server SQL per la manutenzione.

2 Digitare nella console:
selezionare count

() da TheTable
e
selezionare distinto da TheTable
Il 1 ° comando ti dice quanti record totale si ha nella tabella, e il 2 ° comando dice quanti duplicati si dispone. Tuttavia, il 2 ° comando presuppone che i record sono completamente la stessa, cioè la varianza piccola non saranno inclusi nella tabella duplicata.

3 copiare i record in una tabella separata. Il seguente comando copia solo i record che sono distinti e lascia fuori i duplicati.
selezionare distinta *
in TempTable
da TheTable

4 Eliminare i duplicati. La seguente query elimina tutti i duplicati dalla tabella originale, ma conserva 1 copia del disco originale. La colonna "uniqueField" è l'indice di chiave o unico primaria impostato sul tavolo originale. La colonna "dupField" è il campo che è determinato ad essere un trigger per il duplicato. Per esempio, se si dispone di una tabella di cliente con i duplicati, si può stabilire che più di 1 record con lo stesso numero di previdenza sociale è un campo duplicato.
eliminare dalla TheTable
dove non uniqueField in
(Select min (uniqueField) da T2 TempTable
dove T2.dupField = MyTable.dupField)

5 Controllare i risultati. Eseguire le stesse query dal punto 1. Il conteggio totale della tabella originale dovrebbe essere la differenza tra il numero contato prima della query di eliminazione e il numero eliminata dalla tabella. Inoltre, l'esecuzione della query distinta dovrebbe avere lo stesso numero di come il 1 ° query.

Consigli e avvertenze

  • Eseguire sempre il backup dei tavoli prima record manipolare, soprattutto con le query di eliminazione.