LIMIT, OFFSET und FETCH FIRST
Syntax für die Seitennavigation in MySQL, Postgres und SQL Server
LIMIT, OFFSET und FETCH FIRST ist eine kostenlose SQL Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Paginierung ist eine dialektübergreifende Frage
„Wie würden Sie die ersten 10 Zeilen abrufen?“ klingt trivial, bis der Interviewer ergänzt: „Und zwar in Standard-SQL“ oder „Jetzt in SQL Server.“ Die Syntax zum Begrenzen von Zeilen gehört zu den Funktionen, die sich zwischen Datenbanken am stärksten unterscheiden.
Diese Lektion stellt die drei wichtigsten Formen gegenüber: LIMIT (MySQL/Postgres/SQLite), OFFSET ... FETCH (ANSI-Standard, SQL Server) und das ältere TOP (SQL Server).
LIMIT in MySQL und PostgreSQL
Die häufigste Form ist LIMIT n, das die Ergebnismenge auf n Zeilen begrenzt. Diese Form wird von MySQL, PostgreSQL und SQLite unterstützt.
Wichtig ist, dass LIMIT in der logischen Ausführungsreihenfolge nach ORDER BY angewendet wird. Daher kombiniert man beide Klauseln fast immer. Eine Begrenzung ohne Sortierung liefert eine beliebige Auswahl von Zeilen.
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;OFFSET zum Überspringen von Zeilen
Für die Paginierung benötigen Sie einen Offset, um die vorherigen Seiten zu überspringen. OFFSET m überspringt die ersten m Zeilen, bevor die Begrenzung angewendet wird.
Um Seite 3 mit einer Seitengröße von 10 abzurufen, überspringen Sie 20 Zeilen und übernehmen 10. Die allgemeine Formel lautet OFFSET = (page - 1) * page_size.
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10 OFFSET 20;Die Kommasyntax von MySQL
MySQL akzeptiert außerdem die zweistellige Form mit Komma: LIMIT offset, count. Beachten Sie, dass die Reihenfolge gegenüber der Schlüsselwortform umgekehrt ist – das führt häufig zu Fehlern.
LIMIT 20, 10 bedeutet, 20 Zeilen zu überspringen und anschließend 10 zu übernehmen. Das ist identisch mit LIMIT 10 OFFSET 20. Verwenden Sie in Interviews vorzugsweise die Schlüsselwortform, weil sie verständlicher ist.
SELECT name, salary
FROM employees
ORDER BY salary DESC
LIMIT 20, 10;Der ANSI-Standard: FETCH FIRST
Der SQL-Standard verwendet OFFSET ... ROWS FETCH FIRST ... ROWS ONLY. PostgreSQL, Oracle 12c+, DB2 und SQL Server 2012+ unterstützen diese Form.
Sie wirkt zwar ausführlich, ist aber die portable Variante. ROW und ROWS sind austauschbar; FIRST und NEXT sind Synonyme.
SELECT name, salary
FROM employees
ORDER BY salary DESC
OFFSET 20 ROWS
FETCH FIRST 10 ROWS ONLY;SQL Server TOP
Älterer Code für SQL Server verwendet TOP n direkt nach SELECT. Eine integrierte Offset-Funktion gibt es nicht, daher kann der Code allein nicht über die erste Seite hinaus paginieren.
In einem Vorstellungsgespräch könnte man Sie bitten, TOP in die Standardform umzuwandeln. SELECT TOP 10 mit ORDER BY entspricht FETCH FIRST 10 ROWS ONLY.
SELECT TOP 10 name, salary
FROM employees
ORDER BY salary DESC;TOP WITH TIES
Eine praktische SQL-Server-Funktion: TOP n WITH TIES gibt zusätzliche Zeilen zurück, wenn deren Wert für den ORDER BY-Schlüssel mit dem Wert der letzten Zeile übereinstimmt.
Wenn drei Personen das zehnthöchste Gehalt haben, gibt TOP 10 WITH TIES sie alle zurück, also möglicherweise 12 Zeilen. Dies entspricht FETCH FIRST ... WITH TIES im Standard.
SELECT TOP 10 WITH TIES name, salary
FROM employees
ORDER BY salary DESC;ORDER BY ist für deterministische Paginierung zwingend erforderlich
Der wichtigste Punkt im Vorstellungsgespräch lautet hier: OFFSET/LIMIT ohne deterministisches ORDER BY ist unsicher. Die Engine kann für „Seite 2“ andere Zeilen auswählen als für „Seite 1“, weil die zugrunde liegende Reihenfolge nicht definiert ist.
Sortieren Sie immer nach einer eindeutigen oder hinreichend eindeutigen Schlüsselkombination. Wenn Ihre Sortierspalte Duplikate enthält, fügen Sie den Primärschlüssel als Tiebreaker hinzu, damit sich Seiten nicht überschneiden und keine Zeilen übersprungen werden.
SELECT id, name, salary
FROM employees
ORDER BY salary DESC, id ASC
LIMIT 10 OFFSET 20;Warum OFFSET-Paginierung schlecht skaliert
Erfahrene Interviewer prüfen die Performance. Ein großes OFFSET zwingt die Datenbank weiterhin dazu, alle übersprungenen Zeilen zu erzeugen und zu verwerfen. OFFSET 100000 LIMIT 10 liest 100.010 Zeilen, um 10 zurückzugeben.
Die Kosten steigen linear mit der Seitennummer, wodurch eine tiefe Paginierung bei großen Tabellen langsam wird.
Keyset-(Seek-)Paginierung
Die skalierbare Alternative ist die Keyset-Paginierung: Statt anhand einer Anzahl zu überspringen, filtern Sie nach Werten hinter dem zuletzt gesehenen Wert. Dadurch wird ein Indexbereichsscan verwendet, der unabhängig von der Seitentiefe schnell bleibt.
Sie merken sich den Sortierschlüssel der letzten Zeile der vorherigen Seite und fragen nach Zeilen dahinter. Wenn Sie Keyset-Paginierung erwähnen, ist das ein starkes Signal für Senior-Niveau.
SELECT id, name, created_at
FROM events
WHERE created_at < '2026-01-01 10:00:00'
ORDER BY created_at DESC
LIMIT 10;Spickzettel nach Dialekt
Prägen Sie sich diese Tabelle für eine schnelle Erinnerung im Vorstellungsgespräch ein:
- MySQL / Postgres / SQLite:
LIMIT n OFFSET m - Standard / SQL Server 2012+ / Oracle 12c+:
OFFSET m ROWS FETCH FIRST n ROWS ONLY - Älteres SQL Server:
SELECT TOP n(kein Offset) - Älteres Oracle (vor 12c): in einer Unterabfrage nach
ROWNUMfiltern
Kurztest
Wählen Sie die richtige Abfrage für Seite 3 bei einer Seitengröße von 10.
Zusammenfassung
Die Grundlagen der Paginierung:
LIMIT/OFFSETfür MySQL, Postgres und SQLite;OFFSET ... FETCH FIRSTfür den Standard und moderne Versionen von SQL Server;TOPfür ältere Versionen von SQL Server.OFFSET = (page - 1) * page_size.- Immer mit einem deterministischen
ORDER BYkombinieren und einen eindeutigen Tiebreaker hinzufügen. - Große Offsets sind langsam; für tiefe Paginierung sollten Sie Keyset-Paginierung bevorzugen.
Häufig gestellte Fragen
Ist die Lektion „LIMIT, OFFSET und FETCH FIRST“ kostenlos?
Ja — der vollständige Text von „LIMIT, OFFSET und FETCH FIRST“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „LIMIT, OFFSET und FETCH FIRST“?
Syntax für die Seitennavigation in MySQL, Postgres und SQL Server Du übst SQL Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. SQL Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „LIMIT, OFFSET und FETCH FIRST“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede SQL Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Sortieren nach mehreren Spalten und Platzierung von NULL
- LIMIT, OFFSET und FETCH FIRST
- Die obersten N Zeilen zuverlässig zurückgeben
- Nach Ausdrücken und Aliasen sortieren