Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Підзапит – це оператор SELECT, вкладений у select, SELECT... INTO, INSERT... Оператор INTO, DELETE, UPDATE або всередині іншого підзапиту.

Синтаксис

Щоб створити підзапит, можна скористатися трьома формами синтаксису:

порівняння [ANY | УСІ | SOME] (sqlstatement)

вираз [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

Підзапит містить такі частини:

Частина

Опис

Порівняння

вираз та оператор порівняння, який порівнює вираз із результатами підзапиту.

вираз

Вираз, для якого шукається набір результатів підзапиту.

sqlstatement

Оператор 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 IN можна отримати лише ті записи в головному запиті, для яких жоден запис у підзапиті не містить рівне значення.

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

Псевдоніми імен таблиць також можна використовувати в підзапиті, щоб посилатися на таблиці, перелічені в реченні FROM поза підзапитом. У наведеному нижче прикладі повертаються імена працівників, заробітна плата яких дорівнює або більша за середню заробітну плату всіх працівників, які мають однакову посаду. Таблиці "Працівники" надано псевдонім "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) не можна використовувати в перехресних запитах.



Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×