Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Вложенный запрос — это инструкция SELECT, вложенная в select, SELECT... INTO, INSERT... Инструкции INTO, DELETE или UPDATE или внутри другого вложенного запроса.

Синтаксис

Для создания вложенного запроса можно использовать три формы синтаксиса:

сравнение [ANY | ALL | SOME] (sqlstatement)

expression [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

Вложенный запрос состоит из следующих частей:

Часть

Описание

Сравнение

выражение и оператор сравнения, который сравнивает выражение с результатами вложенного запроса.

выражение

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

инструкция_SQL

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


Замечания

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

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

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

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

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

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

И наоборот, вы можете использовать NOT IN для получения только тех записей в запросе main, для которых ни запись во вложенном запросе не содержит равное значение.

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

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

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) не допускаются в перекрестных запросах.



Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

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

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

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

×