ORDER BY ·
ASC / DESC ·
Mehrfachsortierung ·
NULLS FIRST / LAST ·
LIMIT ·
OFFSET
Mit ORDER BY sortieren Sie Ergebnisse, mit LIMIT begrenzen Sie die Anzahl. Diese beiden Klauseln sind essenziell für aussagekräftige Abfragen und performante Paginierung.
ORDER BY sortiert die Ergebnismenge nach einer oder mehreren Spalten. Standardmäßig wird aufsteigend (ASC) sortiert, absteigend mit DESC.
| Option | Bedeutung | Beispiel |
|---|---|---|
| ASC | Aufsteigend (Standard, A→Z, 1→10) | ORDER BY name ASC |
| DESC | Absteigend (Z→A, 10→1) | ORDER BY preis DESC |
| Spalten-Alias | Sortierung nach Alias möglich | ORDER BY "Gesamtpreis" DESC |
| Spalten-Index | Sortierung nach Position (1-basiert) | ORDER BY 2 DESC |
ORDER BY kann teuer sein, wenn keine Indizes auf die sortierten Spalten existieren. Bei großen Tabellen sollten Sie Indizes für häufig sortierte Spalten anlegen.
Mehrfachsortierung ermöglicht die Sortierung nach mehreren Spalten. Zuerst wird nach der ersten Spalte sortiert, dann innerhalb gleicher Werte nach der zweiten, usw.
ORDER BY ist entscheidend. Die erste Spalte hat die höchste Priorität. Bei gleichen Werten wird die zweite Spalte verwendet, usw.
NULLS FIRST / NULLS LAST steuern, ob NULL-Werte am Anfang oder am Ende der Sortierung erscheinen. Dies ist datenbankspezifisch und nicht überall standardmäßig verfügbar.
| Datenbank | ASC (NULL) | DESC (NULL) | NULLS FIRST/LAST |
|---|---|---|---|
| PostgreSQL | NULLS LAST (Standard) | NULLS FIRST (Standard) | ✅ Unterstützt |
| MySQL | NULLS FIRST | NULLS LAST | ❌ Nicht unterstützt (festes Verhalten) |
| SQL Server | NULLS FIRST | NULLS LAST | ❌ Nicht unterstützt (festes Verhalten) |
| Oracle | NULLS LAST (Standard) | NULLS FIRST (Standard) | ✅ Unterstützt |
| SQLite | NULLS FIRST | NULLS LAST | ✅ Unterstützt (ab Version 3.30) |
NULLS FIRST/LAST nicht unterstützt (MySQL, SQL Server), können Sie mit ORDER BY spalte IS NULL, spalte NULL-Werte ans Ende sortieren.
LIMIT begrenzt die Anzahl der zurückgegebenen Zeilen. Mit OFFSET kann ein Startpunkt für die Paginierung festgelegt werden.
| Datenbank | Syntax | Beispiel |
|---|---|---|
| MySQL, SQLite | LIMIT [offset,] count | LIMIT 5, 10 |
| PostgreSQL | LIMIT count OFFSET offset | LIMIT 10 OFFSET 5 |
| SQL Server | OFFSET offset ROWS FETCH NEXT count ROWS ONLY | OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY |
| Oracle | FETCH FIRST count ROWS ONLY (12c+) | FETCH FIRST 10 ROWS ONLY |
LIMIT immer in Kombination mit ORDER BY, wenn Sie eine konsistente Reihenfolge benötigen. Ohne ORDER BY ist die Reihenfolge nicht garantiert.
Paginierung teilt große Ergebnismengen in Seiten auf. Mit LIMIT und OFFSET können Sie gezielt Seiten abrufen. Die Formel: OFFSET = (seite - 1) * pro_seite.
Praxis-Beispiele zeigen die Kombination von ORDER BY und LIMIT für häufige Anwendungsfälle wie Top-N-Listen, Ranglisten und Paginierung.
ROW_NUMBER() oder RANK() (Window Functions). Diese sind standardmäßig in PostgreSQL, SQL Server und Oracle verfügbar, in MySQL seit Version 8.0.
ASC/DESC
ORDER BY
NULLS
LIMIT
OFFSET
Top-N
SELECT name, preis FROM produkte ORDER BY preis DESC LIMIT 10; ·
ORDER BY kategorie, preis DESC NULLS LAST