Конструкция SQL LIMIT: использование в MySQL, аналоги в MS SQL Server
Назад<<< | Содержание | Вперёд>>> |
Конструкция MySQL LIMIT
Конструкция 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.
Поделиться с друзьями
Назад<<< | Содержание | Вперёд>>> |