Как в sql ограничить количество выводимых записей

от admin

Команда 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:

Vlad Mihalcea's user avatar

Yes, this is possible. This differs between db engines.

Debargha Roy's user avatar

dzida's user avatar

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 служит для извлечения диапазона строк из таблицы базы данных. В зависимости от того, как эта конструкция прописана в запросе, можно извлечь либо определённое число начальных строк, либо определённое число строк, следующих за пропущенными начальными строками.

Читать:
Sppsvc exe что это

Конструкция 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.

Похожие статьи