LIMIT
LIMIT
может быть использован для ограничения количества строк, возвращаемых оператором SELECT
. LIMIT
принимает один или два числовых аргумента, которые оба должны быть неотрицательны целочисленные константы (except when using prepared statements).
https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html
Получить 10 строк, начиная с 6-й
Из двух аргументов, первый аргумент определяет смещение от первой строки, второй - определяет максимальное количество возвращаемых строк. Смещение от начального ряда равно 0.
SELECT * FROM tbl LIMIT 5, 10; # возвратит строки 6-15
Чтобы получить все строки от определенного смещения до конца результирующего набора, вы можете использовать некоторое большое число для второго параметра. Это выражение извлекает все строки от 96-й до последней:
SELECT * FROM tbl LIMIT 95, 18446744073709551615;
Получить первые n строк
С одним аргументом, значение определяет количество возвращаемых строк от начала результирующего набора:
SELECT * FROM tbl LIMIT n;
Другими словами, LIMIT n
эквивалентно LIMIT 0, n
mysql> SELECT * FROM city LIMIT 5;
+-----+-------------------------------+---------------------+
| cid | cname | dateup |
+-----+-------------------------------+---------------------+
| 1 | Киев | 2014-09-28 03:18:53 |
| 2 | Харьков | 2014-09-28 03:18:53 |
| 3 | Днепр | 2014-09-28 03:18:53 |
| 4 | Львов | 2014-09-28 03:18:53 |
| 5 | Одесса | 2014-09-28 03:18:53 |
+-----+-------------------------------+---------------------+
5 rows in set (0.03 sec)
Вывести последние n cтрок
Если таблица tbl
проиндексирована по полю id
от меньшего к большему (ASC
), то
SELECT * FROM tbl ORDER BY id DESC LIMIT n;
mysql> SELECT * FROM city ORDER BY cid DESC LIMIT 5;
+-----+------------------------------------------------------------------+---------------------+
| cid | cname | dateup |
+-----+------------------------------------------------------------------+---------------------+
| 189 | Керчь | 2014-11-13 02:55:51 |
| 188 | Иванков | 2014-11-13 02:55:51 |
| 187 | Гуляйполе | 2014-11-13 02:55:51 |
| 186 | Ирпень | 2014-11-13 02:55:51 |
| 185 | Харцызск | 2014-11-13 02:55:51 |
+-----+------------------------------------------------------------------+---------------------+
5 rows in set (0.06 sec)
Как выбрать произвольные записи из таблицы
SELECT * FROM tbl ORDER BY RAND() LIMIT n;
:warning: Не спешите применять такой запрос на больших данных! см. здесь
mysql> SELECT * FROM city ORDER BY RAND() LIMIT 7;
+-----+--------------------------------------+---------------------+
| cid | cname | dateup |
+-----+--------------------------------------+---------------------+
| 180 | Павлодар | 2014-10-13 11:18:24 |
| 7 | Житомир | 2014-09-28 03:18:53 |
| 203 | Каховка | 2014-11-13 02:55:54 |
| 51 | Каменское | 2014-09-28 03:39:33 |
| 116 | Воронеж | 2014-09-30 06:48:22 |
| 185 | Харцызск | 2014-11-13 02:55:51 |
| 70 | Макеевка | 2014-09-28 11:11:26 |
+-----+--------------------------------------+---------------------+
7 rows in set (0.01 sec)