В этом руководстве вы узнаете о коррелированном подзапросе SQL Server, который представляет собой подзапрос, зависящий от внешнего запроса в отношении своих значений.
Введение в коррелированный подзапрос SQL Server
Коррелированный подзапрос — это подзапрос, который использует значения внешнего запроса. Другими словами, коррелированный подзапрос зависит от внешнего запроса для своих значений.
Из-за этой зависимости коррелированный подзапрос не может быть выполнен независимо как простой подзапрос.
Более того, коррелированный подзапрос выполняется повторно, один раз для каждой строки, оцененной внешним запросом. Коррелированный подзапрос также известен как повторяющийся подзапрос.
Рассмотрим следующую таблицу продуктов из образца базы данных :
В следующем примере находят продукты, цена по прейскуранту которых равна максимальной цене по прейскуранту продуктов в той же категории:
SELECT product_name, list_price, category_id FROM production.products p1 WHERE list_price IN( SELECT MAX(p2.list_price) FROM production.products p2 WHERE p2.category_id = p1.category_id GROUP BY p2.category_id ) ORDER BY category_id, product_name;
Вот результат:
В этом примере для каждого продукта, оцененного внешним запросом, подзапрос находит самую высокую цену среди всех продуктов в своей категории.
Если цена текущего продукта равна самой высокой цене всех продуктов в его категории, продукт включается в набор результатов. Этот процесс продолжается для следующего продукта и так далее.
Как видите, коррелированный подзапрос выполняется один раз для каждого продукта, оцененного внешним запросом.
Краткое содержание
- Коррелированный подзапрос — это подзапрос, который использует значения внешнего запроса.