Gli amministratori di database sapere 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 eliminare i record senza rimuovere accidentalmente eventuali altri dati , che può accadere facilmente se la query non è costruito in modo corretto. Scopri come eliminare i record duplicati in SQL preservando i documenti originali . Cose che ti serviranno
Microsoft SQL Server (2005 o 2008 ) economici Mostra più istruzioni
1
Open Enterprise Manager per SQL Server . È necessario eseguire query per verificare la presenza di contenuti duplicati. Si 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
Type nella console : . Select count ( *) from TheTableandselect distinta * dal 1 ° comando TheTableThe ti dice quanti record totali avete nella tabella , e il 2 ° comando vi dice quanti duplicati si dispone . Tuttavia, il 2 ° comando presuppone che i record sono completamente la stessa , cioè la piccola variazione non potrà essere incluso nella tabella duplicata .
3 record di copia
in una tabella separata . I seguenti comandi per copiare solo i record che sono distinte e lascia fuori ogni duplicates.select distinto * in TempTablefrom TheTable
4
eliminare i duplicati . La seguente query cancella tutti i duplicati dalla tabella originale, ma conserva 1 copia del record originale . La colonna " uniqueField " è la chiave principale o insieme indice univoco nella tabella originale . La colonna " dupField " è il campo che è determinato a essere un trigger per il duplicato . Per esempio, se si dispone di una tabella clienti con i duplicati , si può stabilire che più di 1 record con lo stesso numero di previdenza sociale è un field.delete duplicato TheTablewhere uniqueField non in (select min ( uniqueField ) da TempTable T2where T2.dupField = MyTable.dupField ) economici 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 ed il numero eliminata dalla tabella . Inoltre , l'esecuzione della query distinta deve avere lo stesso numero come la prima query.