Оператор in позволяет использовать задание множества выражений (или констант), которые последовательно используются в запросе на поиск. Этот оператор может быть применен для подзапроса по той же причине, т. е. когда результат внутреннего запроса содержит набор значений.
В примере 6.23 показано использование оператора in в подзапросе.
Каждый внутренний запрос может содержать другие запросы. Такой тип подзапросов называется многоуровневым вложенным подзапросом. Максимальное количество внутренних запросов в подзапросе зависит от объема памяти, которую имеет Database Engine для каждого оператора select. В случае подзапросов с множеством уровней вложенности система вначале выполняет самый внутренний запрос и возвращает результат запросу следующего уровня вложенности и т. д. Под конец выполняется самый внешний запрос.
В примере 6.24 показан запрос с множественными уровнями вложенности.
Самый внутренний запрос в примере 6.24 получает значение столбца projectno, равное pi. Средний внутренний запрос сравнивает это значение со всеми значениями столбца project_no в таблице workson. Результатом этого запроса является множество номеров служащих: (10102, 29346, 9031, 28559). Под конец самый внешний запрос отображает соответствующие фамилии для выбранных номеров служащих.