Nwlapcug.com


Come eliminare duplicati SQL

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 di difficoltà, ma l'eliminazione di record da un server SQL è una situazione delicata. L'amministratore è dato il compito di eliminare i record senza accidentalmente rimuovere eventuali altri dati, che possono facilmente accadere se la query non è costruire correttamente. Scopri come eliminare record duplicati in SQL, preservando i record originali.

Istruzioni

1

Aprire Enterprise Manager per SQL Server. È necessario eseguire query per verificare per duplicare il contenuto. Inoltre vi darà un'idea di quanti record devono essere eliminati. Query di grandi dimensioni potrebbe essere necessario arrestare il server SQL per la manutenzione.

2

Digitare nella console:
select count () da TheTable
e
Selezionare distinti
da tavolo
Il comando 1 ° ti dice quanti record totale avete nella tabella, e il 2 ° comando ti dice quanti duplicati si dispone. Tuttavia, il 2 ° comando presuppone che i record sono completamente uguali, significato che qualsiasi piccola varianza non verrà incluso nella tabella duplicata.

3

Copiare i record in una tabella separata. Il comando seguente copia solo i record che sono distinti e lascia fuori tutti i duplicati.
SELECT distinct *
in TempTable
da TheTable

4

Eliminare i duplicati. La query seguente consente di eliminare tutti i duplicati dalla tabella originale, ma conserva 1 copia del disco originale. La colonna "uniqueField" è la chiave primaria o un indice univoco impostato sulla tabella originale. La colonna "dupField" è il campo che è determinato da un trigger per il duplicato. Per esempio, se si dispone di una tabella clienti con duplicati, si potrebbe determinare che più di 1 record con lo stesso numero di sicurezza sociale è un campo duplicati.
Elimina dai TheTable
dove uniqueField non in
(selezionare min(uniqueField) da TempTable T2
dove T2.dupField=MyTable.dupField)

5

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

Consigli & Avvertenze

  • Sempre backup le tabelle prima di manipolare i record, soprattutto con le query di eliminazione.