Beispiele für OFFSET
und FETCH
SELECT *
FROM T1
ORDER BY COL1
OFFSET 10 ROWS
SELECT *
FROM T1
ORDER BY COL1
FETCH FIRST 10 ROWS ONLY
OFFSET
- und FETCH
-Klauseln in einer abgeleiteten Tabelle und in der äußeren AbfrageSELECT *
FROM (
SELECT *
FROM T1
ORDER BY COL1 DESC
OFFSET 1 ROW
FETCH NEXT 10 ROWS ONLY
) a
ORDER BY a.COL1
FETCH FIRST ROW ONLY
Die folgenden Beispiele schreiben die FIRST
/SKIP
-Beispiele und ROWS
-Beispiele weiter oben in diesem Kapitel.
Rufen Sie die ersten zehn Namen aus der Ausgabe einer sortierten Abfrage in der Tabelle "PEOPLE" ab:
SELECT id, name
FROM People
ORDER BY name ASC
FETCH NEXT 10 ROWS ONLY;
Alle Datensätze aus der Tabelle PEOPLE
zurückgeben mit Ausnahme der ersten 10 Namen:
SELECT id, name
FROM People
ORDER BY name ASC
OFFSET 10 ROWS;
Und diese Abfrage gibt die letzten 10 Datensätze zurück.Im Gegensatz zu FIRST
/SKIP
und ROWS
können wir keine Ausdrücke (einschließlich Unterabfragen) verwenden.Um die letzten 10 Zeilen abzurufen, kehren Sie die Sortierung zu den ersten (letzten) 10 Zeilen um und sortieren Sie dann in der richtigen Reihenfolge.
SELECT id, name
FROM (
SELECT id, name
FROM People
ORDER BY name DESC
FETCH FIRST 10 ROWS ONLY
) a
ORDER BY name ASC;
Dieser gibt die Zeilen 81-100 aus der Tabelle PEOPLE
zurück:
SELECT id, name
FROM People
ORDER BY name ASC
OFFSET 80 ROWS
FETCH NEXT 20 ROWS;