Базы данных
и язык SQL

Конструкция SQL LIMIT: использование в MySQL, аналоги в MS SQL Server

Оглавление Связанные темы
Назад<<<ЛистатьВперёд>>>

Конструкция MySQL LIMIT

Конструкция MySQL LIMIT служит для извлечения диапазона строк из таблицы базы данных. В зависимости от того, как эта конструкция прописана в запросе, можно извлечь либо определённое число начальных строк, либо определённое число строк, следующих за пропущенными начальными строками.

LIMIT 2 // вывести первые 2 строки LIMIT 3, 2 //пропустить первые 3 строки и вывести следующие за ними 2 строки

Конструкция LIMIT располагается в конце запроса.

В примерах работаем с базой данных "Недвижимость" и её таблицей "Объект" (OBJECT).

Obj_IDTypeDistrictRooms
1flatЦентр2
2flatЦентр2
3houseВолжский4
4flatЦентр2
5houseВолжский5
6flatПашино2
7flatЦентр3
8houseСосновка3
9flatСосновка1
10flatПашино2
11flatСосновка3
12flatСосновка2
13flatСосновка1

Пример 1. Требуется вывести две первые строки из таблицы. Пишем запрос с использованием LIMIT с одним параметром:

SELECT * FROM OBJECT LIMIT 2

При помощи применённого ограничения диапазона будет выведена следующая таблица:

Obj_IDTypeDistrictRooms
1flatЦентр2
2flatЦентр2

Перейдём к использованию конструкции LIMIT с двумя параметрами. Особенно удобно её применять, если требуется упорядочить строки по какому-либо столбцу с помощью оператора ORDER BY и вывести строки с определёнными значениями столбцов.

Пример 2. Так будет выглядеть наша таблица, если применить оператор ORDER BY и упорядочить объекты по числу комнат:

Obj_IDTypeDistrictRooms
13flatСосновка1
9flatСосновка1
12flatСосновка2
10flatПашино2
1flatЦентр2
6flatПашино2
4flatЦентр2
2flatЦентр2
8houseСосновка3
11flatСосновка3
7flatЦентр3
3houseВолжский4
5houseВолжский5

Требуется исключить из выборки объекты с числом комнат 1, 2 и 5. Следовательно, в результирующей таблице должны присутствовать объекты с числом комнат 3 и 4. Отсчитываем от начала число строк, которые следует исключить - их будет 8, и подсчитываем число строк, которые нужно вывести - их будет 4. Пишем запрос конструкцией LIMIT 8, 4. Приведём полностью запрос, в который вошёл и оператор ORDER BY для упорядочения строк:

SELECT * FROM OBJECT ORDER BY Rooms LIMIT 8, 4

При помощи применённого ограничения будет выведена следующая таблица:

Obj_IDTypeDistrictRooms
8houseСосновка3
11flatСосновка3
7flatЦентр3
3houseВолжский4

Аналоги: извлечение диапазона строк в MS SQL Server

В MS SQL Server можно также извлекать определённый диапазон строк, но для этого существуют другие конструкции и они немного сложнее, чем в MySQL.

Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке.

Скрипт для создания базы данных "Недвижимость", её таблиц и заполения таблиц данными - в файле по этой ссылке.

Аналогом LIMIT с одним параметром является оператор TOP. Он может применяться только с одним параметром и служит для вывода из таблицы первых строк, число которых указано в качестве параметра.

TOP 2 // вывести первые 2 строки

Для более сложных манипуляций с диапазонами извлекаемых строк существуют операторы OFFSET и FETCH.

Если применять только оператор OFFSET, после которого указывается один параметр, то будут выведены все оставшиеся в таблице строки кроме первых, число которых указано в качестве параметра.

OFFSET 2 ROWS // вывести все строки, кроме первых двух

Аналогом LIMIT с двумя параметрами является конструкция из операторов OFFSET и FETCH. После первого из них указывается, сколько первых строк нужно пропустить. После второго указывается, сколько последующих строк нужно вывести.

OFFSET 3 ROWS FETCH NEXT 2 ROWS ONLY // пропустить первые 3 строки и вывести 2 следующие за ними строки

Пример 3. Требуется вывести две первые строки из таблицы. Пишем запрос с использованием оператора TOP:

SELECT TOP 2 * FROM Object

При помощи применённого ограничения диапазона, так же как в примере 1, будет выведена следующая таблица:

Obj_IDTypeDistrictRooms
1flatЦентр2
2flatЦентр2

Пример 4. Как и в примере 2, строки в таблице упорядочены по числу комнат. Требуется исключить из выборки объекты с числом комнат 1 и 2. То есть пропустить первые 2 строки и вывести все остальные строки. Пишем запрос с оператором OFFSET:

SELECT * FROM Object ORDER BY Rooms OFFSET 8 ROWS

При помощи применённого ограничения диапазона будет выведена следующая таблица:

Obj_IDTypeDistrictRooms
8houseСосновка3
11flatСосновка3
7flatЦентр3
3houseВолжский4
5houseВолжский5

Результирующая таблица отличается от полученной в примере 2, ведь теперь мы вывели кроме исключённых все строки до конца.

Пример 5. А теперь условие, полностью аналогичное условию примера 2, применяем конструкцию из операторов OFFSET и FETCH вместе.

Чтобы исключить из выборки объекты с числом комнат не только 1 и 2 (первые 8 строк), но и 5 (последняя строка), после оператора FETCH указываем, что нужно вывести лишь 4 строки, следующих после исключённых строк. Пишем запрос:

SELECT * FROM Object ORDER BY Rooms OFFSET 8 ROWS FETCH NEXT 4 ROWS ONLY

При помощи применённого ограничения будет выведена следующая таблица:

Obj_IDTypeDistrictRooms
8houseСосновка3
11flatСосновка3
7flatЦентр3
3houseВолжский4

Примеры запросов к базе данных "Недвижимость" есть также в уроках по операторам IN, GROUP BY, предикату EXISTS.

Поделиться с друзьями

Назад<<<ЛистатьВперёд>>>