Ограничиваем выдачу в SQL. SQL — это просто
Как команда SQL LIMIT позволяет ограничить количество строк возвращаемых запросом. Объясняем на примерах и задачках.
3К открытий9К показов
Продолжаем изучение английского (SQL) начатое там и тут. Если вы прочитали эти статьи и выполнили тесты здесь, то вы уже знаете пять слов из лексикона дата-инженеров. Вспомним их:
- SELECT – выбрать;
- FROM – из таблицы;
- ORDER BY – отсортировать по;
- ASC – возрастанию;
- DESC – убыванию.
Используя этот ограниченный лексикон вы можете извлекать данные из таблиц базы данных в нужном вам порядке. В этой статье введём еще одно слово – LIMIT – ограничение. Данное ключевое слово позволяет нам ограничить количество строк возвращаемых запросом. Снова обратимся к нашей таблице студентов и напишем следующий запрос:
Выполнив его мы получим следующий результат:
Как видите сервер вернул нам одну строку из таблицы. Почему именно эту? Мы не указали в нашем запросе ничего относительно того какую строку нам нужно и сервер сделал это на свое усмотрение. Возможно в следующий раз этот же запрос вернёт другую запись и тоже будет прав. Ведь в случае если запрос не формулирует чёткого требования к серверу он волен поступать по своему разумению (точнее по разумению разработчиков серверной программы).
Что можно сделать чтобы быть уверенным в результате такого запроса? Можно скомбинировать команду LIMIT с уже известной вам командой сортировки ORDER BY.
Этот запрос сначала отсортирует ВСЕ ЗАПИСИ в таблице по возрастанию оценок и затем вернет нам одну (первую) запись из этого списка. То есть мы получим запись студента с минимальной оценкой.
Если таких студентов несколько то результатом всё равно будет одна строка. Для того чтобы уточнить желаемый результат мы можем добавить ещё один уровень сортировки. Например в случае равных оценок взять первого по алфавиту студента. Мы уже использовали такую многоступенчатую сортировку на прошлом уроке. Напомню что каждый следующий уровень сортировки работает только если предыдущий дал одинаковый результат для нескольких строк.
Применив это новое слово вы сможете пройти этот тест.
Ещё несколько примеров.
Чтобы найти трёх лучших по успеваемости студентов нужно выполнить запрос:
А для поиска трёх отстающих – нужно поменять порядок сортировки на противоположный:
Таким образом ключевое слово лимит позволяет ограничивать выдачу заданным количеством строк. А что делать в случае если нам нужно найти четвёртого студента в списке? Тут придется выучить ещё одно слово – OFFSET.
OFFSET переводится с английского как отступ, а в SQL позволяет ограничить выдачу сверху. Вот пример для выборки четвёртого по алфавиту студента:
При выполнении этого запроса база данных снова отсортирует все записи в таблице students
по полю name в алфавитном порядке, пропустит первых три записи и выдаст одну (четвёртую) в соответствии с введённым запросом.
Попробуйте воспользоваться этим для решения тестов 4 и 5.
Кроме выполнения тестов Вы можете свободно экспериментировать с SQL запросами на площадке SQLize.online а если возникли вопросы спросить профессионалов в нашем чате.
Если вам всё понятно и задания не вызвали затруднений переходите к следующей теме.
3К открытий9К показов