SQL LIMIT
Summary: in this tutorial, you’ll learn to use the SQL LIMIT clause to limit the number of rows returned from a query.
Introduction to SQL LIMIT clause
To limit the number of rows returned by a select statement, you use the LIMIT and OFFSET clauses.
The following shows the syntax of LIMIT & OFFSET clauses:
- The LIMIT row_count determines the number of rows ( row_count ) returned by the query.
- The OFFSET offset clause skips the offset rows before beginning to return the rows.
The OFFSET clause is optional. If you omit it, the query will return the row_count rows from the first row returned by the SELECT clause.
When you use the LIMIT clause, it is important to use an ORDER BY clause to ensure the order of rows in the result set.
Not all database systems support the LIMIT clause. Therefore, the LIMIT clause is available only in some database systems only such as MySQL, PostgreSQL, SQLite, Sybase SQL Anywhere, and HSQLDB. If you use SQL Server, you can use the SELECT TOP instead.
SQL LIMIT clause examples
We’ll use the employees table in the sample database to demonstrate the LIMIT & OFFSET clauses.

The following statement returns all rows in the employees table sorted by the first_name column.

The following example uses the LIMIT clause to return the first 5 rows in the result set returned by the SELECT clause:

The following example uses both LIMIT & OFFSET clauses to return five rows starting from the 4th row:

In MySQL, you can use the shorter form of the LIMIT & OFFSET clauses like this:
Using SQL LIMIT to get the top N rows with the highest or lowest value
You can use the LIMIT clause to get the top N rows with the highest or lowest value. For example, the following statement gets the top five employees with the highest salaries.

First, the ORDER BY clause sorts the employees by salary in descending order and then the LIMIT clause restricts five rows returned from the query.
To get the top five employees with the lowest salary, you sort the employees by salary in the ascending order instead.

Getting the rows with the N th highest value
Suppose you have to get employees who have the 2 nd highest salary in the company. To do so, you use the LIMIT OFFSET clauses as follows.
The ORDER BY clause sorts the employees by salary in descending order. And the LIMIT 1 OFFSET 1 clause gets the second row from the result set.
This query works with the assumption that every employee has a different salary. It will fail if there are two employees who have the same highest salary.
Also, if you have two or more employees who have the same 2 nd highest salary, the query just returns the first one.
To fix this issue, you can get the second highest salary first using the following statement.
![]()
And pass the result to another query:

If you know subquery, you can combine both queries into a single query as follows:
Как ограничить количество строк в выборке sql
In this article, we will understand how to limit rows in SQL using different examples. We will see how to play with the SQL queries and get the resultant data according to different conditions and limitations.
For the purpose of demonstration, we will be creating a Participant table in a database called “GeeksForGeeksDatabase“.
Step 1: Creating the Database
Use the below SQL statement to create a database called GeeksForGeeksDatabase.
Query:
Step 2: Using the Database
Use the below SQL statement to switch the database context to GeeksForGeeksDatabase.
Query:
Step 3: Table Definition
Query:
Step 4: Insert data into the table
Query:
You can use the below statement to see the contents of the created table:
Query:
Now let’s see how to use limit query here. To limit the resultant data for MS Access we use SELECT TOP syntax. LIMIT syntax works in MYSQL. In the Microsoft database, we use the below syntax (TOP which works similar to LIMIT in MYSQL)
Syntax of SELECT with TOP and ORDER BY statement in MySQL :
Query:
In the above syntax, WHERE conditions are optional conditions that must be true for the records to be selected.
ORDER BY expression is an optional statement in the query used to return the result in either ascending or descending order according to the keyword (ASC or DESC). Here count is the number of rows to be returned from the result.
Let’s understand this using some example queries.
Query 1:
Output:
Using the TOP query we found the 2 toppers participants from our table data having maximum percentage and do not want to use any conditional statements. ORDER BY Percent DESC has sorted the record in descending order and using LIMIT 2 we got the first 2 rows from the sorted result.
We can also include some situations using the WHERE clause in the above example. Suppose if we don’t want the ID 58 participant in our result set.
We can write queries like :
Query 2:
Output:
The above query will select all the participants according to the imposed condition (i.e. all Participants except ID 58 participant will be selected) then the results would be sorted by Percentage in ascending order (The ORDER BY keyword sorts the records in ascending order by default). Finally, the first 2 rows would be returned by the above query as we mentioned TOP(2).
This is how we can limit the records from tables in SQL using TOP. We can further play with the SQL queries and get the resultant data according to different conditions and limitations.
Конструкция 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.
Запрос SQL на выборку определённого числа записей

В одной из предыдущих статей, посвящённых SQL-запросу на выборку записей из таблицы, мы с Вами разобрали возможность считывания данных из таблиц. И, в принципе, этого вполне достаточно для успешного использования базы данных. Однако, иногда наиболее рационально ограничить число результирующих записей, и как раз о том, как это сделать, мы и поговорим ниже.
Давайте сразу рассмотрим запрос SQL на выборку определённого числа записей:
SELECT * FROM users WHERE id > 5 LIMIT 10
Данным запросом мы получим 10 первых записей. Все остальные отпадут. Изменение от обычного SQL-запроса на выборку данных состоит только в параметре «LIMIT«. Число, которое идёт за ним, сообщает, какое количество записей мы хотим получить, и в нашем случае — это 10.
Также существует возможность задавать после «LIMIT» два числа:
SELECT * FROM users WHERE id > 5 LIMIT 10, 20
Данный SQL-запрос вернёт записи, начиная с 10-го номера включительно в количестве 20-ти штук. То есть первое число означает, с какой записи надо формировать результат выборки, а второе число означает, какое количество записей всего должно быть.
Собственно, это всё, что необходимо для выборки определённого числа записей. Используется это очень часто, например, при выводе последних 10-ти зарегистрированных пользователях. Или при выводе 5-ти свежих статей (как на главной странице моего сайта), или в других аналогичных ситуациях.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 6 ):
Михаил! Добрый день. Вопрос-использование LIMIT каким то образом оптимизирует запрос, если изначально известно, что нужно выбрать одну строку? Каким образом действует этот "ограничитель"? При выявлении нужной строки в таблице выборка прекращается или она дальше происходит и просто выводится одна строка?
Нет, прекращается дальнейший поиск. В этом и преимущество, получается выигрыш в скорости, и это будет намного быстрее, чем потом, например, в PHP убирать всё лишнее.