OFFSET- och FETCH FIRST-satser

OFFSET- och FETCH FIRST-satser används för att returnera ett angivet intervall av rader som börjar vid en särskild startpunkt i en resultatuppsättning. Möjligheten att begränsa de rader som hämtas från stora resultatuppsättningar gör att du kan "bläddra sida" genom data och förbättrar effektiviteten.

OFFSET-satsen indikerar antalet rader som ska hoppas över innan data börjar att returneras. Om OFFSET-satsen inte används i ett SELECT-sats är startraden 0. FETCH FIRST-satsen anger antalet rader som ska returneras, antingen som ett positivt heltal som är större än eller lika med 1 eller som en procentsats från den startpunkt som indikeras i OFFSET-satsen. Om både OFFSET och FETCH FIRST används i en SELECT-sats ska OFFSET-satsen komma först.

OFFSET- och FETCH FIRST-satser stöds inte i underfrågor.

OFFSET-format

OFFSET-formatet är:

Kopiera
OFFSET [ n {ROWS | ROW} ]

n är ett positivt heltal. Om n är större än antalet rader som returneras i resultatuppsättningen returneras ingenting och inget felmeddelande visas.

ROWS är detsamma som ROW.

FETCH FIRST-format

FETCH FIRST-formatet är:

Kopiera
FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]

n är antalet rader som ska returneras. Standardvärdet är 1 om n utesluts.

n är ett positivt heltal som är större än eller lika med 1 om det inte följs av PERCENT. Om n följs av PERCENT, kan värdet vara antingen ett positivt bråkdelsvärde eller ett positivt heltal.

ROWS är detsamma som ROW.

WITH TIES måste användas med ORDER BY-satsen.

WITH TIES gör att fler rader kan returneras än det värde som anges i FETCH eftersom peer-rader, de rader som inte är separata utifrån ORDER BY-satsen, också returneras.

Exempel

Returnera information från den tjugosjätte raden i resultatuppsättningen som sorterats efter efternamn och sedan efter förnamn.

Kopiera
SELECT anst_id, efternamn, förnamn FROM anst ORDER BY efternamn, förnamn OFFSET 25 ROWS

Ange att du bara vill returnera tio rader.

Kopiera
SELECT anst_id, efternamn, förnamn FROM anst ORDER BY efternamn, förnamn OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY

Returnera tio rader och deras peer-rader (rader som inte är separata utifrån ORDER BY-satsen):

Kopiera
SELECT anst_id, efternamn, förnamn FROM anst ORDER BY efternamn, förnamn OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES