Підзапити SQL

Увага! : Цю статтю перекладено за допомогою служби машинного перекладу; див. застереження. Версію цієї статті англійською мовою див. тут для отримання довідки.

Підзапит — це оператор SELECT, вкладений в оператор SELECT, SELECT...INTO, INSERT...INTO, DELETE, UPDATE або в інший підзапит.

Синтаксис

Можна використовувати три форми синтаксису для створення підзапиту:

порівняння [ANY | ALL | 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) у порівняннях «істинне/хибне», щоб визначити, чи повертає підзапит будь-які записи.

Також можна використовувати псевдоніми ім'я таблиці в підзапиту звернутися до таблиці, відображені в реченні 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). Підзапити вигляді (профілі користувачів у списку ВИБЕРІТЬ) у перехресні запити заборонено.



Примітка : Застереження про машинний переклад: Цю статтю перекладено комп’ютерною системою без втручання людини. Корпорація Майкрософт пропонує таку послугу, щоб іншомовні користувачі могли дізнаватися про продукти, служби й технології Microsoft. Оскільки статтю перекладено за допомогою служби машинного перекладу, вона може містити смислові, синтаксичні або граматичні помилки.

Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

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

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×