Databaseansvarlige vet at sporadiske feil oppstår , og like poster er satt inn i databasen . Problemet er et vanlig problem for administratorer å fikse, men sletting av poster fra en SQL server er en delikat situasjon . Administratoren er gitt jobben med å slette poster uten uhell fjerne eventuelle andre data , som kan skje lett hvis søket ikke er bygget skikkelig . Lær hvordan å slette like poster i SQL samtidig bevare de opprinnelige postene . Du trenger
Microsoft SQL Server ( 2005 eller 2008 )
Vis flere instruksjoner
en
Åpen Enterprise Manager for SQL Server. Du må kjøre spørringer for å sjekke for likt innhold. Det vil også gi deg en idé om hvor mange poster må slettes . Store spørsmål kan kreve at du få ned SQL server for vedlikehold
2
Skriv inn i konsollen : . Select count ( * ) fra TheTableandselect distinkt * fra TheTableThe første kommandoen forteller deg hvor mange totalt poster du har i tabellen , og den andre kommandoen forteller deg hvor mange kopier du har. Imidlertid forutsetter det andre kommandoen at postene er helt det samme , noe som betyr noen små avvik vil ikke bli inkludert i duplikat tabellen .
3
Kopiere poster i en egen tabell . Følgende kommando eksemplarer bare poster som er distinkt og utelater noen duplicates.select distinkt * inn TempTablefrom thetable
4
Slett duplikater. Følgende spørsmål sletter alle duplikater fra den opprinnelige tabellen , men den bevarer en kopi av den opprinnelige posten . Den " uniqueField "-kolonnen er primærnøkkelen eller unik indeks satt på den opprinnelige tabellen . Den " dupField "-kolonnen er det feltet som er fast bestemt på å være en trigger for duplikat. For eksempel, hvis du har en kunde tabell med duplikater , kan du bestemme at mer enn en plate med samme Social Security-nummer er et duplikat field.delete fra TheTablewhere uniqueField ikke i (velg min ( uniqueField ) fra TempTable T2where T2.dupField = MyTable.dupField )
5
Sjekk resultatene . Kjøre de samme spørsmål fra Trinn 1 . Den totale telling av det opprinnelige bord bør være forskjellen mellom antall telles før slettespørring og antallet slettes fra tabellen . I tillegg bør kjøre den distinkte spørringen har samme antall som første spørringen.