Sammendrag: i denne opplæringen lærer du hvordan du bruker SQL Server ROW_NUMBER()
funksjon for å tilordne et sekvensielt heltall til hver rad i et resultatsett.
Introduksjon til SQL Server ROW_NUMBER () -funksjon
ROW_NUMBER()
er en vindusfunksjon som tildeler et sekvensielt heltall til hver rad i partisjonen til et resultatsett. Radnummeret starter med 1 for den første raden i hver partisjon.
Følgende viser syntaksen til ROW_NUMBER()
-funksjonen:
La oss undersøk syntaksen til ROW_NUMBER()
-funksjonen i detalj.
PARTISJON AV
PARTITION BY
klausul deler resultatsettet i partisjoner (et annet begrep for grupper av rader). ROW_NUMBER()
-funksjonen brukes på hver partisjon separat og initialiseres radnummeret for hver partisjon på nytt.
PARTITION BY
-klausulen er valgfritt. Hvis du hopper over den, vil ROW_NUMBER()
-funksjonen behandle hele resultatsettet som en enkelt partisjon.
BESTILL AV
ORDER BY
ledd definerer den logiske rekkefølgen på radene i hver partisjon av resultatsettet. ORDER BY
-klausulen er obligatorisk fordi ROW_NUMBER()
-funksjonen er rekkefølsom.
SQL Server ROW_NUMBER () eksempler
Vi bruker sales.customers
tabellen fra eksempeldatabasen for å demonstrere ROW_NUMBER()
-funksjonen .
Bruk av SQL Server ROW_NUMBER () funksjon over et resultatsetteksempel
Følgende uttalelse bruker ROW_NUMBER()
for å tildele hver kunderekke et løpende nummer:
Her er den delvise utgang:
I dette eksemplet viser vi hoppet over PARTITION BY
klausulen, derfor behandlet ROW_NUMBER()
hele resultatsettet som en enkelt partisjon.
Ved hjelp av SQL Server ROW_NUMBER () over partisjonseksempel
Følgende eksempel bruker ROW_NUMBER()
funksjon for å tildele et sekvensielt heltall til hver kunde. Den tilbakestiller tallet når byen endres:
Følgende bilde viser delvis utdata:
I dette eksemplet brukte vi PARTITION BY
-klausulen for å dele kundene i partisjoner etter by. Radnummeret ble initialisert på nytt da byen endret seg.
Bruk av SQL Server ROW_NUMBER () for paginering
Funksjonen ROW_NUMBER()
er nyttig for paginering i applikasjoner. For eksempel kan du vise en liste over kunder etter side, der hver side har 10 rader.
Følgende eksempel bruker ROW_NUMBER()
for å returnere kunder fra rad 11 til 20, som er den andre siden:
Resultatet er som følger:
I dette eksemplet:
- Først brukte CTE funksjonen
ROW_NUMBER()
for å tildele hver rad i resultatet angir et sekvensielt heltall. - For det andre returnerte det ytre spørringen radene på den andre siden, som har radnummeret mellom 11 og 20.
I denne opplæringen har du lært hvordan du bruker SQL Server ROW_NUMBER()
-funksjonen for å tilordne et sekvensielt heltall til hver rad i en partisjon av et spørsmål.