Операторы сравнения с множеством значений IN, ANY, All
Операторы сравнения с множеством значений имеют следующий смысл.
IN
Равно любому из значений, полученных во внутреннем запросе.
NOT IN
Не равно ни одному из значений, полученных во внутреннем запросе.
= ANY
То же, что и IN, Соответствует логическому оператору OR.
> ANY, > = ANY
Больше, чем (либо больше или равно) любое полученное число. Эквивалентно > или > = для самого меньшего полученного числа.
< ANY, < = ANY
Меньше, чем (либо меньше или равно) любое полученное число. Эквивалент < или < = для самого большего полученного числа.
= ALL
Равно всем полученным значениям. Эквивалентно логическому оператору AND
> ALL, > = ALL
Больше, чем (либо больше или равно) все полученные числа. Эквивалент > или > = для самого большего полученного числа.
< ALL, < = ALL
Меньше, чем (либо меньше или равно) все полученные числа. Эквивалентно < или < = самого меньшего полученного числа.
Примеры запросов с использованием приведенных операторов Выбрать сведения о студентах, проживающих в городе, где расположен университет, в котором они учатся.
SELECT *
FROM STUDENT S WHERE CITY = ANY (SELECT CITY
FROM UNIVERSITY U
WHERE U.UNIV_ID = S.UNIV_ID) ;
Другой вариант этого запроса:
SELECT *
FROM STUDENT S WHERE CITY IN
(SELECT CITY
FROM UNIVERSITY U
WHERE U.UNIV_ID = S . UNIV_ID);
Выборка данных об идентификаторах студентов, у которых оценки превосходят величину, по крайней мере, одной из оценок, полученных ими же 6 октября 1999 года.
SELECT DISTINCT STUDENT_ID
FROM EXAM_MARKS WHERE MARK > ANY (SELECT MARK
FROM EXAM_MARKS
WHERE EXAM DATE = '06/10/1999');
Оператор ALL, как правило, эффективно используется с неравенствами, а не с равенствами, поскольку значение равно всем, которое должно получиться в этом случае в результате выполнения подзапроса, может иметь место, только если все результаты идентичны. Такая ситуация практически не может быть реализована, так как если подзапрос генерирует множество различных значений, то никакое одно значение не может быть равно сразу всем значениям в обычном смысле. В SQL выражение < > ALL реально означает не равно ни одному из результатов подзапроса.
Подзапрос, выбирающий данные о названиях всех университетов с рейтингом более высоким, чем рейтинг любого университета Воронежа:
SELECT *
FROM UNIVERSITY WHERE RATING > ALL (SELECT RATING
FROM UNIVERSITY
WHERE CITY = 'Воронеж') ;
В этом запросе вместо ALL можно использовать ANY (проанализируйте, как в этом случае изменится смысл приведенного запроса):
SELECT *
FROM UNIVERSITY WHERE NOT RATING > ANY (SELECT RATING FROM UNIVERSITY WHERE CITY = 'Воронеж');
| Maya 3D графика в кино и телевидении Воздействие испытаний ядерного оружия на здоровье населения Объектно-ориентированный язык программирования Java Объектно-ориентированное программирование Delphi Библиотека визуальных компонентов VCL и ее базовые классы Кроссплатформенное программирование для Linux Элементы управления Win32 Элементы управления Windows XP Файлы и устройства ввода/вывода Что такое экспертная система? Объектно-ориентированное программирование Инструментальные средства разработки экспертных систем Программирование на языке CLIPS Критерии и количественные характеристики надежности Расчет характеристик надежности невостанавливаемых резервированных изделий Расчет надежности системы с постоянным резервированием Интегрирование тригонометрических функций ; |