LIMIT
SELECT … [ORDER BY …] LIMIT row_count [OFFSET offset]
Gibt höchstens row_count Zeilen zurück, mit OFFSET erst nach dem Überspringen der angegebenen Anzahl. Die Schreibweise LIMIT 20, 10 bedeutet dasselbe wie LIMIT 10 OFFSET 20.
Parameter
- row_count – wie viele Zeilen zurückgegeben werden.
- OFFSET offset – optional, wie viele Zeilen übersprungen werden.
Beispiele
Die Beispiele mit den Tabellen customers, products und orders verwenden die Beispieldatenbank aus der Serie SQL-Grundlagen.
Die drei teuersten Produkte:
SELECT name, price FROM products ORDER BY price DESC LIMIT 3;
+-------------------+-------+ | name | price | +-------------------+-------+ | Coffee grinder | 49.00 | | Glass teapot | 27.00 | | Coffee beans 1 kg | 17.90 | +-------------------+-------+
Die zweite Seite mit zwei Produkten pro Seite:
SELECT id, name FROM products ORDER BY id LIMIT 2 OFFSET 2;
+----+--------------+ | id | name | +----+--------------+ | 3 | White mug | | 4 | Glass teapot | +----+--------------+
Worauf Sie achten sollten
- LIMIT ohne ORDER BY gibt „irgendwelche“ Zeilen zurück, nicht die ersten nach irgendeinem Kriterium.
- Ein großer OFFSET (etwa Seite 5000) ist langsam – die Datenbank geht alle übersprungenen Zeilen durch und verwirft sie. Bei langen Listen blättern Sie besser nach der letzten ID: WHERE id > last_id ORDER BY id LIMIT 20.
- Wandeln Sie Werte für LIMIT vom Benutzer in eine ganze Zahl um; in einem Prepared Statement binden Sie sie als ganze Zahlen.
Ausführliche Erklärung mit weiteren Beispielen: Ergebnisse sortieren und paginieren (Serie SQL-Grundlagen).