Команда LIMIT
Команда LIMIT задает ограничение на количество записей, выбираемых из базы данных.
Данная команда может использоваться совместно с командой SELECT, командой DELETE, и командой UPDATE.
См. также команду order, с помощью которой можно отсортировать выбранные записи.
Синтаксис
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | Дима | 23 | 400 |
| 2 | Петя | 25 | 500 |
| 3 | Вася | 23 | 500 |
| 4 | Коля | 30 | 1000 |
| 5 | Иван | 27 | 500 |
| 6 | Кирилл | 28 | 1000 |
Пример
Давайте выберем первые 3 записи:
SQL запрос выберет следующие строки:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 1 | Дима | 23 | 400 |
| 2 | Петя | 25 | 500 |
| 3 | Вася | 23 | 500 |
Пример
Давайте выберем 3 записи, начиная со второй (первая имеет номер 0, а вторая — номер 1):
SQL запрос выберет следующие строки:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 2 | Петя | 25 | 500 |
| 3 | Вася | 23 | 500 |
| 4 | Коля | 30 | 1000 |
Пример
Давайте выберем последние 3 записи.
Для этого отсортируем их с помощью ORDER BY по убыванию id и возьмем 3 записи с помощью LIMIT
Они и будут искомыми последними записями, так как LIMIT сработает после сортировки и будет браться по уже отсортированной таблице.
При этом записи будут идти в обратном порядке — с 6-той по 4-тую (так как мы их отсортировали):
SQL запрос выберет следующие строки:
| id айди |
name имя |
age возраст |
salary зарплата |
|---|---|---|---|
| 6 | Кирилл | 28 | 1000 |
| 5 | Иван | 27 | 500 |
| 4 | Коля | 30 | 1000 |
Пример
Давайте выберем последнюю запись в таблице.
Для этого отсортируем их с помощью ORDER BY по убыванию id и возьмем первую запись с помощью LIMIT:
SQL оператор SELECT LIMIT
В этом учебном материале вы узнаете, как использовать оператор SELECT LIMIT в SQL, с синтаксисом и примерами.
Описание
SQL оператор SELECT LIMIT используется для извлечения записей из одной или нескольких таблиц в базе данных и ограничения количества возвращаемых записей на основании предельного значения.
Подсказка: SELECT LIMIT поддерживается не во всех базах данных SQL.
Для баз данных, таких как SQL Server или MSAccess, используйте оператор SELECT TOP, чтобы ограничить свои результаты. Оператор SELECT TOP является патентованным эквивалентом оператора SELECT LIMIT.
Синтаксис
Синтаксис для оператора SELECT LIMIT в SQL.
Параметры или аргумент
Пример — использование ключевого слова LIMIT
Давайте посмотрим, как использовать оператор SELECT с опцией LIMIT в SQL.
Например.
How to limit the results on a SQL query
I’m wondering is it possible to limit the result of a SQL request?
For example, only return up to 50 rows from:
5 Answers 5
SQL Standard
The SQL:2008 Standard provides the following syntax to limit the SQL result set:
The SQL:2008 Top-N records clause is supported in Oracle since 12c, SQL Server since 2012, and PostgreSQL since 8.4.
SQL Server
While SQL Server supports the SQL:2008 Top-N standard syntax, you need to provide the OFFSET clause as well:
On older SQL Server versions, you can use TOP:
Oracle 11g and older versions
Prior to version 12c, to fetch the Top-N records, you had to use a derived table and the ROWNUM pseudocolumn:
MySQL and PostgreSQL 8.3 or older
Traditionally, MySQL and PostgreSQL use the LIMIT clause to restrict the result set to the Top-N records:
![]()
Yes, this is possible. This differs between db engines.
![]()
![]()
You could use the TOP clause:
If your database doesn’t support it you may try also LIMIT and ROWNUM but once again this will depend on the database you are using.
Yes is possible, in MYSQL:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be non-negative integer constants (except when using prepared statements).
With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15
To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter. This statement retrieves all rows from the 96th row to the last:
SELECT * FROM tbl LIMIT 95,18446744073709551615;
With one argument, the value specifies the number of rows to return from the beginning of the result set:
Конструкция SQL LIMIT: использование в MySQL, аналоги в MS SQL Server
Конструкция MySQL LIMIT служит для извлечения диапазона строк из таблицы базы данных. В зависимости от того, как эта конструкция прописана в запросе, можно извлечь либо определённое число начальных строк, либо определённое число строк, следующих за пропущенными начальными строками.
Конструкция LIMIT располагается в конце запроса.
В примерах работаем с базой данных «Недвижимость» и её таблицей «Объект» (OBJECT).
| Obj_ID | Type | District | Rooms |
| 1 | flat | Центр | 2 |
| 2 | flat | Центр | 2 |
| 3 | house | Волжский | 4 |
| 4 | flat | Центр | 2 |
| 5 | house | Волжский | 5 |
| 6 | flat | Пашино | 2 |
| 7 | flat | Центр | 3 |
| 8 | house | Сосновка | 3 |
| 9 | flat | Сосновка | 1 |
| 10 | flat | Пашино | 2 |
| 11 | flat | Сосновка | 3 |
| 12 | flat | Сосновка | 2 |
| 13 | flat | Сосновка | 1 |
Пример 1. Требуется вывести две первые строки из таблицы. Пишем запрос с использованием LIMIT с одним параметром:
При помощи применённого ограничения диапазона будет выведена следующая таблица:
| Obj_ID | Type | District | Rooms |
| 1 | flat | Центр | 2 |
| 2 | flat | Центр | 2 |
Перейдём к использованию конструкции LIMIT с двумя параметрами. Особенно удобно её применять, если требуется упорядочить строки по какому-либо столбцу с помощью оператора ORDER BY и вывести строки с определёнными значениями столбцов.
Пример 2. Так будет выглядеть наша таблица, если применить оператор ORDER BY и упорядочить объекты по числу комнат:
| Obj_ID | Type | District | Rooms |
| 13 | flat | Сосновка | 1 |
| 9 | flat | Сосновка | 1 |
| 12 | flat | Сосновка | 2 |
| 10 | flat | Пашино | 2 |
| 1 | flat | Центр | 2 |
| 6 | flat | Пашино | 2 |
| 4 | flat | Центр | 2 |
| 2 | flat | Центр | 2 |
| 8 | house | Сосновка | 3 |
| 11 | flat | Сосновка | 3 |
| 7 | flat | Центр | 3 |
| 3 | house | Волжский | 4 |
| 5 | house | Волжский | 5 |
Требуется исключить из выборки объекты с числом комнат 1, 2 и 5. Следовательно, в результирующей таблице должны присутствовать объекты с числом комнат 3 и 4. Отсчитываем от начала число строк, которые следует исключить — их будет 8, и подсчитываем число строк, которые нужно вывести — их будет 4. Пишем запрос конструкцией LIMIT 8, 4. Приведём полностью запрос, в который вошёл и оператор ORDER BY для упорядочения строк:
При помощи применённого ограничения будет выведена следующая таблица:
| Obj_ID | Type | District | Rooms |
| 8 | house | Сосновка | 3 |
| 11 | flat | Сосновка | 3 |
| 7 | flat | Центр | 3 |
| 3 | house | Волжский | 4 |
Аналоги: извлечение диапазона строк в MS SQL Server
В MS SQL Server можно также извлекать определённый диапазон строк, но для этого существуют другие конструкции и они немного сложнее, чем в MySQL.
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке .
Скрипт для создания базы данных «Недвижимость», её таблиц и заполения таблиц данными — в файле по этой ссылке .
Аналогом LIMIT с одним параметром является оператор TOP. Он может применяться только с одним параметром и служит для вывода из таблицы первых строк, число которых указано в качестве параметра.
Для более сложных манипуляций с диапазонами извлекаемых строк существуют операторы OFFSET и FETCH.
Если применять только оператор OFFSET, после которого указывается один параметр, то будут выведены все оставшиеся в таблице строки кроме первых, число которых указано в качестве параметра.
Аналогом LIMIT с двумя параметрами является конструкция из операторов OFFSET и FETCH. После первого из них указывается, сколько первых строк нужно пропустить. После второго указывается, сколько последующих строк нужно вывести.
Пример 3. Требуется вывести две первые строки из таблицы. Пишем запрос с использованием оператора TOP:
При помощи применённого ограничения диапазона, так же как в примере 1, будет выведена следующая таблица:
| Obj_ID | Type | District | Rooms |
| 1 | flat | Центр | 2 |
| 2 | flat | Центр | 2 |
Пример 4. Как и в примере 2, строки в таблице упорядочены по числу комнат. Требуется исключить из выборки объекты с числом комнат 1 и 2. То есть пропустить первые 2 строки и вывести все остальные строки. Пишем запрос с оператором OFFSET:
При помощи применённого ограничения диапазона будет выведена следующая таблица:
| Obj_ID | Type | District | Rooms |
| 8 | house | Сосновка | 3 |
| 11 | flat | Сосновка | 3 |
| 7 | flat | Центр | 3 |
| 3 | house | Волжский | 4 |
| 5 | house | Волжский | 5 |
Результирующая таблица отличается от полученной в примере 2, ведь теперь мы вывели кроме исключённых все строки до конца.
Пример 5. А теперь условие, полностью аналогичное условию примера 2, применяем конструкцию из операторов OFFSET и FETCH вместе.
Чтобы исключить из выборки объекты с числом комнат не только 1 и 2 (первые 8 строк), но и 5 (последняя строка), после оператора FETCH указываем, что нужно вывести лишь 4 строки, следующих после исключённых строк. Пишем запрос:
При помощи применённого ограничения будет выведена следующая таблица:
| Obj_ID | Type | District | Rooms |
| 8 | house | Сосновка | 3 |
| 11 | flat | Сосновка | 3 |
| 7 | flat | Центр | 3 |
| 3 | house | Волжский | 4 |
Примеры запросов к базе данных «Недвижимость» есть также в уроках по операторам IN, GROUP BY, предикату EXISTS.