Oversigt: i denne vejledning lærer du, hvordan du bruger SQL Server ROW_NUMBER()
funktion til at tildele et sekventielt heltal til hver række i et resultatsæt.
Introduktion til SQL Server ROW_NUMBER () -funktion
ROW_NUMBER()
er en vinduesfunktion, der tildeler et sekventielt heltal til hver række inden for partitionen af et resultatsæt. Rækkens nummer starter med 1 for den første række i hver partition.
Følgende viser syntaksen for ROW_NUMBER()
-funktionen:
Lad os undersøge syntaksen for ROW_NUMBER()
-funktionen i detaljer.
PARTITION BY
PARTITION BY
klausul opdeler resultatsættet i partitioner (et andet udtryk for grupper af rækker). Funktionen ROW_NUMBER()
påføres hver partition separat og geninitialiseres række nummeret for hver partition.
PARTITION BY
-klausulen er valgfri. Hvis du springer den over, behandler ROW_NUMBER()
-funktionen hele resultatsættet som en enkelt partition.
ORDER BY
ORDER BY
klausul definerer den logiske rækkefølge for rækkerne inden for hver partition af resultatsættet. ORDER BY
-klausulen er obligatorisk, fordi ROW_NUMBER()
-funktionen er rækkefølsom.
SQL Eksempler på server ROW_NUMBER ()
Vi bruger sales.customers
-tabellen fra eksempeldatabasen til at demonstrere funktionen ROW_NUMBER()
.
Brug af SQL Server ROW_NUMBER () funktion over et resultatsæteksempel
Følgende udsagn bruger ROW_NUMBER()
til at tildele hver kunderække et løbenummer:
Her er den delvise output:
I dette eksempel viser vi sprang PARTITION BY
-klausulen, derfor behandlede ROW_NUMBER()
hele resultatsættet som en enkelt partition.
Brug af SQL Server ROW_NUMBER () over partitionseksempel
Følgende eksempel bruger ROW_NUMBER()
funktion til at tildele et sekventielt heltal til hver kunde. Det nulstiller antallet, når byen ændres:
Følgende billede viser deloutput:
I dette eksempel brugte vi PARTITION BY
-klausulen til at opdele kunderne i partitioner efter by. Række nummeret blev geninitialiseret, da byen ændredes.
Brug af SQL Server ROW_NUMBER () til pagination
Funktionen ROW_NUMBER()
er nyttig til pagination i applikationer. For eksempel kan du vise en liste over kunder efter side, hvor hver side har 10 rækker.
Følgende eksempel bruger ROW_NUMBER()
til at returnere kunder fra række 11 til 20, hvilket er den anden side:
Outputtet er som følger:
I dette eksempel:
- Først brugte CTE funktionen
ROW_NUMBER()
til at tildele hver række i resultatet indstiller et sekventielt heltal. - For det andet returnerede den ydre forespørgsel rækkerne på den anden side, som har række nummer mellem 11 og 20.
I denne vejledning har du lært, hvordan du bruger SQL Server ROW_NUMBER()
-funktionen til at tildele et sekventielt heltal til hver række inden for en partition af en forespørgsel.