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:
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:
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.
SELECT anst_id, efternamn, förnamn FROM anst ORDER BY efternamn, förnamn OFFSET 25 ROWS
Ange att du bara vill returnera tio rader.
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):
SELECT anst_id, efternamn, förnamn FROM anst ORDER BY efternamn, förnamn OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES