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).

Siehe auch:
ORDER BY
SELECT