Подчиненный запрос - это оператор SELECT, вложенный в операторы SELECT, SELECT..INTO, INSERT...INTO, DELETE или UPDATE либо в другой подчиненный запрос.
Вложенный запрос в общем случае возвращает какое-то множество записей. Для отбора этих записей во внешнем запросе могут быть использованы:
сравнение [ANY | ALL | SOME] (оператор);
выражение [NOT] IN (оператор);
[NOT] EXISTS (оператор),
где
сравнение - выражение и оператор сравнения, сравнивающий это выражение с результатом выполнения подчиненного запроса;
выражение - выражение, которое должно быть найдено в наборе записей, являющихся результатом выполнения подчиненного запроса;
оператор - правильный оператор SELECT, заключенный в круглые скобки, который и является вложенным запросом.
Подчиненный запрос обычно используется в предложении WHERE или HAVING.
Предикаты ANY или SOME являются синонимами. Они используются для отбора в главном запросе записей, которые удовлетворяют сравнению с какой-либо из записей, отобранных в подчиненном запросе.
В операторе подчиненного запроса SELECT нельзя задавать запрос на объединение или перекрестный запрос.
Ниже в виде вложенного запроса представлен запрос «Список сотрудников, имеющих детей»:
SELECTсотрудник.ФИО
FROMсотрудник
WHEREсотрудник.код_сотрудника=АNY (SELECT код_сотрудника
FROM дети);
Этот же запрос может быть представлен с использованием предиката IN:
SELECT фио
FROMсотрудник
WHEREкод_сотрудника IN
(SELECT код_сотрудника
FROM дети);
Список сотрудников, не имеющих детей, можно выдать, используя запрос
SELECT фио
FROMсотрудник
WHEREкод_сотрудника NOT IN
(SELECT код_сотрудника
FROM дети);
предыдущаяследующая