Dupliserte verdier i en database kan være et problem når du utfører svært nøyaktige operasjoner. De kan føre til at en enkelt verdi blir behandlet flere ganger, og sminker resultatet. Dupliserte poster tar også mer plass enn nødvendig, noe som fører til langsom ytelse.
I denne guiden vil du forstå hvordan du kan finne og fjerne dupliserte rader i en SQL Server -database.
Det grunnleggende
Før vi fortsetter videre, hva er en duplikatrekke? Vi kan klassifisere en rad som en duplikat hvis den inneholder et lignende navn og verdi som en annen rad på bordet.
For å illustrere hvordan du finner og fjerner dupliserte rader i en database, la oss starte med å lage eksempeldata som vist i spørsmålene nedenfor:
Bruk duplisertb;I eksemplet på spørringen ovenfor oppretter vi en tabell som inneholder brukerinformasjon. I neste leddblokk bruker vi innsatsen i uttalelsen for å legge til dupliserte verdier i brukernes tabell.
Finn dupliserte rader
Når vi har prøvedataene vi trenger, la oss sjekke for duplikatverdier i brukernes tabell. Vi kan gjøre dette ved å bruke tellefunksjonen som:
Velg brukernavn, e -post, telefon, stater, count (*) som count_value fra brukergruppe etter brukernavn, e -post, telefon, stater som har telling (*)> 1;Ovennevnte kodebit skal returnere duplikatrappene i databasen og hvor mange ganger de vises på tabellen.
Et eksempelutgang er som vist:
Deretter fjerner vi duplikatrappene.
Slett dupliserte rader
Neste trinn er å fjerne dupliserte rader. Vi kan gjøre dette ved å bruke Delete -spørringen som vist i eksemplet utdraget nedenfor:
Slett fra brukere der ID ikke i (velg Max (ID) fra brukergruppe etter brukernavn, e -post, telefon, stater);
Spørringen skal påvirke duplikatradene og holde de unike radene i tabellen.
Vi kan se bordet som:
Velg * fra brukere;Den resulterende verdien er som vist:
Slett dupliserte rader (Bli med)
Du kan også bruke en Join -uttalelse for å fjerne dupliserte rader fra en tabell. Et eksempel på eksempler på spørringskode er som vist nedenfor:
Slett en fra brukere en indre sammenføyningHusk at bruk av indre sammenføyning for å fjerne duplikater kan ta lengre tid enn andre i en omfattende database.
Slett duplikatrekke (ROW_NUMBER ())
Row_number () -funksjonen tildeler et sekvensielt nummer til radene i en tabell. Vi kan bruke denne funksjonaliteten til å fjerne duplikater fra en tabell.
Tenk på eksemplet på spørringen nedenfor:
Bruk duplisertbSpørringen ovenfor skal bruke verdiene som returneres fra ROW_Number () -funksjonen for å fjerne duplikatene. En duplikatrekke vil produsere en verdi høyere enn 1 fra ROW_Number () -funksjonen.
Konklusjon
Å holde databasene dine rene ved å fjerne dupliserte rader fra tabellene er bra. Dette bidrar til å forbedre ytelse og lagringsplass. Ved hjelp av metodene i denne opplæringen vil du rense databasene dine trygt.