Datenbank-Administratoren wissen, dass gelegentlich Fehler auftreten, und doppelte Datensätze in die Datenbank eingefügt . Das Problem ist ein häufiges Problem für Administratoren zu beheben, aber das Löschen von Datensätzen aus einer SQL Server ist eine heikle Situation . Der Administrator wird die Aufgabe das Löschen von Datensätzen , ohne versehentlich entfernt alle anderen Daten , die leicht passieren kann , wenn die Abfrage nicht richtig bauen gegeben . Erfahren Sie, wie Sie doppelte Datensätze in SQL zu löschen, während die Erhaltung der Originaldaten. Things You
Microsoft SQL Server ( 2005 oder 2008 ) brauchen
anzeigen Weitere Anweisungen
1
Open Enterprise Manager für SQL Server. Sie benötigen zum Ausführen von Abfragen für Duplicate Content zu überprüfen. Es wird Ihnen auch eine Vorstellung davon, wie viele Datensätze gelöscht werden müssen . Große Abfragen können benötigen Sie zur Senkung der SQL Server für die Wartung
2
Typ in die Konsole : . Select count (*) from TheTableandselect deutliche * vom TheTableThe 1. Befehl sagt Ihnen, wie viele Datensätze insgesamt haben Sie in der Tabelle , und die 2. Befehl sagt Ihnen, wie viele Duplikate Sie haben. Allerdings nimmt die 2. Befehl , dass die Datensätze vollständig sind die gleichen , was bedeutet, jede kleine Abweichung nicht im doppelten Tabelle aufgenommen.
3
Kopieren von Datensätzen in einer separaten Tabelle . Der folgende Befehl kopiert nur Datensätze, die verschieden sind und lässt jegliche duplicates.select deutliche * in TempTablefrom thetable
4
Duplikate löschen . Die folgende Abfrage löscht alle Duplikate aus der ursprünglichen Tabelle , aber es bewahrt 1 Kopie der ursprünglichen Datensatz . Die " uniqueField "-Spalte ist der Primärschlüssel oder einen eindeutigen Index Set auf der ursprünglichen Tabelle . Die " dupField "-Spalte ist das Feld, fest entschlossen, ein Auslöser für die doppelte sein wird . Zum Beispiel, wenn Sie einen Kunden -Tabelle mit Dubletten haben, können Sie feststellen, dass mehr als 1 Datensatz mit dem gleichen Sozialversicherungsnummer ein Duplikat field.delete von TheTablewhere uniqueField nicht in ( select min ( uniqueField ) ab TempTable T2where T2.dupField = MyTable.dupField )
5
Überprüfen Sie die Ergebnisse . Führen Sie die gleichen Abfragen aus Schritt 1 . Die Gesamtzahl der ursprünglichen Tabelle sollte die Differenz zwischen der Zahl vor dem Löschabfrage und die Zahl aus der Tabelle gelöscht gezählt sein . Darüber hinaus sollten die verschiedenen laufenden Abfrage haben die gleiche Anzahl wie im 1. Abfrage.