OFFSET- und FETCH FIRST-Klauseln
Die Klauseln OFFSET
und FETCH FIRST
werden verwendet, um einen angegebenen Zeilenbereich ab einem bestimmten Startpunkt in einer Ergebnismenge zurückzugeben. Die Möglichkeit, die aus großen Ergebnismengen abgerufenen Zeilen zu beschränken, ermöglicht Ihnen, durch die Daten „zu blättern“, und verbessert die Effizienz.
Die Klausel OFFSET
gibt die Anzahl an Zeilen an, die zu überspringen sind, bevor Daten zurückzugeben sind. Wenn die Klausel OFFSET
in einer SELECT
-Anweisung nicht verwendet wird, ist die Startzeile 0. Die Klausel FETCH FIRST
gibt die Anzahl der Zeilen an, die zurückgegeben werden, entweder als Ganzzahl ohne Vorzeichen größer gleich 1 oder als Prozentsatz, ab dem Startpunkt in der Klausel OFFSET
. Wenn sowohl OFFSET
als auch FETCH FIRST
in einer SELECT
-Anweisung verwendet werden, muss die OFFSET
-Klausel zuerst stehen.
Die Klauseln OFFSET
und FETCH FIRST
werden in Unterabfragen nicht unterstützt.
OFFSET-Klauselformat
Das Format von OFFSET
ist:
[ OFFSET n {ROWS | ROW} ]
n
ist eine Ganzzahl ohne Vorzeichen. Wenn n
größer als die Anzahl der in der Ergebnismenge zurückgegebenen Zeilen ist, wird nichts zurückgegeben und keine Fehlermeldung angezeigt.
ROWS
ist identisch mit ROW.
FETCH FIRST-Klauselformat
Das FETCH FIRST
-Format ist:
[ FETCH FIRST [ n [ PERCENT ] ] { ROWS | ROW } {ONLY | WITH TIES } ]
n
gibt die Anzahl an zurückzugebenden Zeilen an. Der Standardwert ist 1, wenn n
ausgeschlossen wird.
n
ist eine Ganzzahl ohne Vorzeichen größer oder gleich 1, wenn kein PERCENT
folgt. Wenn nach n
ein PERCENT
folgt, kann der Wert entweder ein positiver Teilwert oder eine Ganzzahl ohne Vorzeichen sein.
ROWS
ist identisch mit ROW.
WITH TIES
muss zusammen mit der ORDER BY
-Klausel verwendet werden.
WITH TIES
erlaubt die Rückgabe von mehr Zeilen als im FETCH
-Wert angegeben, da auch Peer-Zeilen zurückgegeben werden. Das sind Zeilen, die aufgrund der ORDER BY
-Klausel nicht eindeutig sind.
Geben Sie Informationen aus der sechsundzwanzigsten Zeile der Ergebnismenge, sortiert nach nachname
und dann nach vorname
zurück.
SELECT angnr, nachname, vorname FROM ang ORDER BY nachname, vorname OFFSET 25 ROWS
Geben Sie an, dass Sie nur zehn Zeilen zurückgeben möchten.
SELECT angnr, nachname, vorname FROM ang ORDER BY nachname, vorname OFFSET 25 ROWS FETCH FIRST 10 ROWS ONLY
Geben Sie die zehn Zeilen und ihre Peer-Zeilen (Zeilen, die basierend auf der ORDER BY
-Klausel nicht eindeutig sind) zurück.
SELECT angnr, nachname, vorname FROM ang ORDER BY nachname, vorname OFFSET 25 ROWS FETCH FIRST 10 ROWS WITH TIES