Подчиненные запросы SQL

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

Подчиненным запросом называется инструкция SELECT, помещенная в инструкцию SELECT, SELECT...INTO, INSERT...INTO, DELETE, UPDATE или в другой подчиненный запрос.

Синтаксис

Для создания подчиненного запроса используются три варианта синтаксиса:

сравнение [ANY | ALL | SOME] (инструкция_sql)

выражение [NOT] IN (инструкция_sql)

[NOT] EXISTS (инструкция_sql)

Подчиненный запрос включает в себя следующие элементы:

Элемент

Описание

сравнение

выражение и оператор сравнения, сравнивающий выражение с результатами подчиненного запроса

выражение

Выражение, для которого выполняется поиск результирующего набора запроса

инструкция_sql

Инструкция SELECT, составленная в том же формате и по тем же правилам, что и любая другая инструкция SELECT. Она всегда заключается в скобки.


Замечания

Подчиненный запрос может использоваться вместо выражения в списке полей инструкции SELECT или в предложениях WHERE и HAVING. В подчиненном запросе инструкция SELECT используется для получения набора одного или нескольких заданных значений, оценка которого производится в выражении WHERE или HAVING.

С помощью предикатов ANY или SOME, которые являются синонимами, извлекаются записи в главном запросе, удовлетворяющие сравнению с любыми записями, извлеченными в подчиненном запросе. В следующем примере выводятся все товары, цена которых больше цены любого товара, проданного со скидкой от 25% и выше.

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

С помощью предиката ALL извлекаются только те записи в главном запросе, которые удовлетворяют сравнению со всеми записями, извлеченными в подчиненном запросе. При замене оператора ANY оператором ALL в предыдущем примере выводятся только те товары, цена которых больше цены всех товаров, проданных со скидкой от 25% и выше. Этот оператор в большей степени ограничивает результаты запроса.

С помощью предиката IN извлекаются только те записи в главном запросе, для которых какие-либо записи в подчиненном запросе содержат одинаковые значения. В следующем примере выводятся все товары со скидкой от 25% и выше.

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

С помощью предиката NOT, наоборот, извлекаются только те записи в главном запросе, для которых ни одна из записей в подчиненном запросе не содержит одинаковых значений.

Использование предиката EXISTS (с необязательным зарезервированным словом NOT) в сравнениях истина/ложь позволяет определить, возвращаются ли какие-либо записи в подчиненном запросе.

В подчиненном запросе можно также использовать псевдонимы таблиц для обращения к таблицам, перечисленным в предложении FROM за пределами подчиненного запроса. В следующем примере выводятся имена сотрудников, заработная плата которых равна или больше средней заработной платы всех сотрудников, занимающих одну должность. Таблице «Сотрудники» присвоен псевдоним «Т1».

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

В предыдущем примере зарезервированное слово AS является необязательным.

Некоторые подчиненные запросы разрешены в перекрестные запросы, в частности, как предикаты (для которых в предложении WHERE). Подчиненные запросы в качестве выходных данных (в списке SELECT), не разрешены в перекрестных запросов.



Примечание : Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×