SQL подзаявки

Забележка: Бихме искали да ви осигурим най-новото помощно съдържание възможно най-бързо на вашия собствен език. Тази страница е преведена чрез автоматизация и може да съдържа граматически грешки и несъответствия. Нашата цел е това съдържание да ви бъде полезно. Можете ли да ни кажете дали информацията е била полезна за вас, в дъното на тази страница? Ето статията на английски за бърза справка.

Подзаявка е вложени вътре в изберете, изберете командата Select... В ТОВА ВМЪКНЕТЕ... В, изтриване или актуализиране на отчет или в друг подзаявка.

Синтаксис

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

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

израз [НЕ] В (sqlstatement)

[НЕ] EXISTS (sqlstatement)

Подзаявка има следните части:

Част

Описание

сравнение

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

израз

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

sql_инструкция

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


Забележки

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

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

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

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

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

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

От друга страна можете да използвате NOT IN, за да извлечете само тези записи в основния заявка, за които няма запис в подзаявката съдържа еднаква стойност.

Използване на първоначалния EXISTS (с по избор не запазва word) в истина/неистина сравнения за определяне дали подзаявката връща всички записи.

Можете също да използвате име на псевдоними на таблици в подзаявка да препращат към таблици, изброени в клаузата 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;

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

В кръстосаните заявки са разрешени някои подзаявки – по-конкретно, като предикати (тези в клаузата WHERE). В кръстосаните заявки не са разрешени подзаявки като резултат (тези в списъка за избор).



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

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

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

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×