Составители:
Рубрика:
Хотя этот пример только показывает иной способ формулировки запроса для
задачи, решаемой и другими путями (с помощью оператора IN или соединения), EXISTS
представляет собой одну из наиболее важных возможностей SQL. Фактически любой
запрос, который выражается через IN, может быть альтернативным образом
сформулирован также с помощью EXISTS. Однако обратное высказывание
несправедливо.
Если бы нам потребовалось показать всех
сотрудников организации, исключая
сотрудников первого отдела, то следует написать следующий запрос:
SELECT Ид_Отд, Фамилия, Имя, Отчество, Год_ рожд
FROM Сотрудник
WHERE NOT EXISTS
( SELECT * FROM Отдел_ Сотрудники
WHERE Ид_Сотр = Сотрудник.Ид_Сотр AND Ид_Отд = 1);
Ид_Сотр Фамилия Имя Отчество Год рожд.
9 Никитин Виктор Сергеевич 1952
10 Мухин Степан Михайлович 1964
11 Попов Михаил Михайлович 1947
12 Иванов Иван Иванович 1980
13 Хохлов Иван Васильевич 1960
14 Яковлев Иван Васильевич 1980
Рис. 5.23. Сотрудники, не принадлежащие отделу с номером 1
5.3.5. Использование функций в подзапросе
Любая агрегатная функция (см. п. 4.4) по определению выдает одиночное значение
на любом количестве строк, для которых она использована.
Запрос, использующий одиночную функцию агрегата без предложения GROUP
BY, будет выбирать одиночное значение для использования в основном предикате.
Пояснением к сказанному будет следующий пример. Найти год рождения самого
молодого сотрудника в базовой таблице СОТРУДНИК (
рис. 2.1)
SELECT MIN (Год_рожд)
FROM Сотрудник;
Ответ: 1980.
Страницы
- « первая
- ‹ предыдущая
- …
- 125
- 126
- 127
- 128
- 129
- …
- следующая ›
- последняя »
