Една подзаявка е инструкция за ИЗБИРАНЕ, вложена в избор, изберете... В, ВМЪКВАНЕ... В, изтриване или актуализиране на декларация или в друга подзаявка.

Синтаксис

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

сравнение [всеки | ВСИЧКИ | НЯКОИ] (sqlstatement)

Expression [not] in (sqlstatement)

НЕ СЪЩЕСТВУВА (sqlstatement)

Една подзаявка съдържа следните части:

Част

Описание

сравнение

израз и оператор за сравнение, който сравнява израза с резултатите от подзаявката.

израз

Израз, за който се търси наборът от резултати от подзаявката.

sql_инструкция

Командата SELECT, като следвате същия формат и правила като всяка друга инструкция за ИЗБИРАНЕ. Той трябва да е ограден в скоби.


Забележки

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

Използвайте всички или някои предикати, които са синоними, за извличане на записи в основната заявка, които удовлетворяват сравнението с всички записи, извлечени в подзаявката. Следващият пример връща всички продукти, чиято единична цена е по-голяма от тази на всеки продукт, продаден при намаление от 25 процента или повече:

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

Използвайте ALL предикат за извличане само на тези записи в основната заявка, които удовлетворяват сравнението с всички записи, извлечени в подзаявката. Ако сте променили някои от всички в предишния пример, заявката би върнала само онези продукти, чиято единична цена е по-голяма от тази на всички продукти, продадени с отстъпка от 25 процента или повече. Това е много по-рестриктивно.

Използвайте в предикат, за да извлечете само тези записи в основната заявка, за която някакъв запис в подзаявката съдържа еднаква стойност. Следващият пример връща всички продукти с отстъпка от 25 процента или повече:

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

Напротив, можете да използвате не за извличане само на тези записи в основната заявка, за която няма запис в подзаявката, съдържа еднаква стойност.

Използвайте предиката СЪЩЕСТВУВА (със запазената дума незадължително) в 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;

В предишния пример запазена дума като е по желание.

Някои подзаявки са позволени в кръстосани заявки – по-конкретно като предикати (тези в клаузата WHERE). Подзаявките като изход (тези в списъка за ИЗБИРАНЕ) не са разрешени за кръстосани заявки.



Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединяване към Microsoft Office участници в Insider

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?

Благодарим ви за обратната връзка!

×