Databasebeheerders weet dat af en toe fouten optreden, en dubbele records in de database worden ingevoegd. Het gaat om een gemeenschappelijk probleem voor beheerders om vast te stellen, maar het verwijderen van records uit een SQL-server is een delicate situatie. De beheerder is de taak van het verwijderen van records zonder per ongeluk verwijderen van andere gegevens, die gemakkelijk gebeuren kan als de query niet bouwen goed is gegeven. Informatie over het verwijderen van dubbele records in SQL met behoud van de oorspronkelijke records.
Wat die u nodig hebt
- Microsoft SQL Server (2005 of 2008)
Open Enterprise Manager voor SQL Server. U moet het uitvoeren van query's om te controleren op dubbele inhoud. Het zal ook u een idee geven van hoeveel records moeten worden geschrapt. Grote query's moet u te brengen in de SQL-server voor onderhoud.
Typ in de console:
count() selecteren TheTable
en
Selecteer gescheiden TheTable
De 1ste commando vertelt u hoeveel totalen berekenen voor records in de tabel hebt, en het 2de commando vertelt u hoeveel kopieën hebt. Echter, de 2e opdracht wordt ervan uitgegaan dat records volledig hetzelfde, wat betekent dat een kleine afwijking zal niet worden opgenomen in de duplicaattabel.Kopieert u records naar een afzonderlijke tabel. De volgende opdracht kopieert u alleen de records die gescheiden zijn en laat alle duplicaten.
Selecteer verschillende *
in TempTable
van TheTableDubbele items verwijderen. De volgende query worden alle duplicaten verwijderd uit de oorspronkelijke tabel, maar het behoudt 1 kopie van de oorspronkelijke record. De kolom "uniqueField" is de primaire sleutel of unieke index instellen op de oorspronkelijke tabel. De kolom "dupField" is het veld dat wordt vastgesteld dat een trigger voor het duplicaat. Bijvoorbeeld, als u een klantentabel met duplicaten heeft vaststellen u dat meer dan 1 record met de dezelfde sofi-nummer een dubbele veld is.
verwijderen van TheTable
waar uniqueField niet in
(Selecteer min(uniqueField) uit TempTable T2
waar T2.dupField=MyTable.dupField)Bekijk de resultaten. De dezelfde query's uitvoeren vanaf stap 1. De totale telling van de oorspronkelijke tabel moet het verschil tussen het aantal geteld voor de verwijderquery en het aantal uit de tabel verwijderd. Bovendien, de afzonderlijke query wordt uitgevoerd, moeten de dezelfde tellen als de 1e query.
- Altijd back-up uw tabellen voordat het manipuleren van records, met name met verwijderquery's.