Функции ALL и ANY в SQL: больше всех, равно хотя бы какому-либо
Назад<<< | Содержание | Вперёд>>> |
Действие кванторных функций SQL ALL и ANY
Функции SQL ALL и ANY называются кванторными функциями. Аргументом такой функции является множество значений некоторого учитываемого столбца в подзапросе вида
Приведённая часть запроса может быть прочитана как "все значения учитываемого столбца"
По аналогии поясним действие функции ANY. Часть запроса
может быть прочитана как "хотя бы какое-либо значения учитываемого столбца". У функции ANY есть синоним - SOME (действует полностью идентично).
Функции ALL и ANY применяются с операторами сравнения (>, <, >=, <=, =).
Если вы хотите выполнить запросы к базе данных из этого урока на MS SQL Server, но эта СУБД не установлена на вашем компьютере, то ее можно установить, пользуясь инструкцией по этой ссылке.
ALL в SQL: больше всех
Функция ALL применяется обычно для получения выборки, характеризуемой значениями учитываемого столбца, которые больше (или меньше) всех значений того же столбца другой выборки, которая извлекается подзапросом.
Работаем с базой данных "Недвижимость". Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными - в файле по этой ссылке.
Таблица Object содержит данные об объектах, причём Space_Total - это общая площадь объекта, а District - район, в котором он находится. Таблица Deal содержит данные о сделках, причём значение столбца Type может быть или Sale (продажа), или Rent (аренда).Таблица Client содержит данные соответственно о клиентах.

Пример 1. Требуется получить общую площадь и районы объектов, у которых общая площадь больше общей площади всех (любого из) объектов, расположенных в районе "Сосновка". Пишем запрос с использованием функции ALL:
В нашей базе данных объекты, расположенные в Сосновке, имеют значения общей площади 120, 33, 60, 44, 33. При помощи сравнения со всем множеством этих значений получена следующая выборка:
Space_Total | District |
146 | Волжский |
210 | Волжский |
ANY в SQL: равно хотя бы какому-либо
Функция ANY (или её полный аналог SOME) применяется для получения выборки, характеризуемой значениями учитываемого столбца, которые равны хотя бы какому-либо из значений того же столбца другой выборки, которая извлекается подзапросом.
Пример 2. Требуется найти клиентов, которые заключили сделки на аренду недвижимости. Напомним: в таблице Deal (сделка) значение столбца Type может быть или Sale (продажа), или Rent (аренда). Пишем запрос с использованием функции ANY, в котором основной запрос обращён к таблице CLIENT, а подзапрос - к таблице DEAL:
В нашей базе нашлись два клиента, заключившие сделки на аренду недвижимости. Получена следующая выборка:
Client_ID |
3 |
8 |
Сравнение с результатом, возвращаемым функцией ANY можно инвертировать при помощи ключевого слова NOT. Тогда прочтение смысла запроса с использованием этой функции будет следующим: "не равно ни одному из каких-либо".
Пример 3. Требуется найти объекты, с которыми не были заключены сделки. Пишем запрос с использованием функции ANY, в котором основной запрос обращён к таблице OBJECT, а подзапрос - к таблице DEAL:
В нашей базе нашёлся один объект, с которым ещё не заключена сделка. Получена следующая выборка:
Obj_ID |
13 |
Примеры запросов к базе данных "Недвижимость" есть также в уроках по операторам IN, GROUP BY, предикату EXISTS, функциям ALL и ANY и LIMIT.
Поделиться с друзьями
Назад<<< | Содержание | Вперёд>>> |