Podpoizvedbe SQL

Opomba:  Najnovejšo vsebino pomoči v vašem jeziku vam želimo zagotoviti v najkrajšem možnem času. Ta stran je bila prevedena z avtomatizacijo in lahko vsebuje slovnične napake ali nepravilnosti. Naš namen je, da bi bila vsebina za vas uporabna. Ali nam lahko na dnu te strani sporočite, ali so bile informacije za vas uporabne? Tukaj je angleški članek za preprosto referenco.

Podpoizvedba je izjava SELECT, ki je ugnezdena znotraj izjav SELECT, SELECT...INTO, INSERT...INTO, DELETE ali UPDATE ali znotraj druge podpoizvedbe.

Sintaksa

Za ustvarjanje podpoizvedbe je mogoče uporabiti tri oblike sintakse:

primerjava [ANY | ALL | SOME] (izjavasql)

izraz [NOT] IN (izjavasql)

[NOT] EXISTS (izjavasql)

Podpoizvedba je sestavljena iz teh delov:

Del

Opis

primerjava

izraz in primerjalni operator, ki primerja izraz z rezultati podpoizvedbe.

izraz

Izraz, za katerega je preiskan nabor rezultatov podpoizvedbe.

izjavasql

Izjava SELECT, za katero veljajo enaka oblika in pravila kot za druge izjave SELECT. Postavite jo v oklepaje.


Opombe

Podpoizvedbo lahko uporabite namesto izraza na seznamu polj izjave SELECT ali pa v stavku WHERE ali HAVING. Izjavo SELECT uporabite v podpoizvedbi, če želite ovrednotiti nabor ene ali več določenih vrednosti v izrazu stavka WHERE ali HAVING.

Če želite pridobiti zapise v glavni poizvedbi, ki zadovoljujejo primerjavo s katerim koli zapisom, pridobljenim v podpoizvedbi, uporabite izjavi ANY ali SOME, ki sta sopomenki. Ta primer vrne vse izdelke, katerih cena enote je večja od cene katerega koli izdelka, prodanega s 25 odstotkov popusta ali več:

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

Izjavo ALL uporabite, če želite pridobiti samo tiste zapise v glavni poizvedbi, ki zadovoljujejo primerjavo z vsemi zapisi, pridobljenimi v podpoizvedbi. Če v predhodnemu primeru spremenite izjavo ANY v ALL, bo poizvedba vrnila samo tiste izdelke, katerih cena enote je večja od cene vseh izdelkov, prodanih s 25 odstotkov popusta ali več. To je veliko bolj omejevalno.

Če želite pridobiti samo tiste zapise v glavni poizvedbi, za katere imajo nekateri zapisi v podpoizvedbi enako vrednost, uporabite izjavo IN. Ta primer vrne vse izdelke s 25 odstotkov popusta ali več:

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

Po drugi strani pa lahko uporabite izjavo NOT IN, če želite pridobiti samo tiste zapise v glavni poizvedbi, za katere noben zapis v podpoizvedbi nima enake vrednosti.

Če želite določiti, ali naj poizvedba vrne zapise, uporabite predikat EXISTS (z izbirno rezervirano besedo NOT) v primerjavah »resnično/neresnično«.

Uporabite lahko tudi vzdevke imena tabele v podpoizvedbe za sklicevanje na tabele, ki so navedene v stavku FROM zunaj podpoizvedbe. Naslednji primer vrne imena zaposlenih, katerih plače so enako ali večje od povprečja plače vseh zaposlenih z enakim nazivom. Vzdevek »T1« navedena tabela zaposleni:

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

V zgornjem primeru je rezervirana beseda AS izbirna.

Nekatere podpoizvedbe so dovoljene v navzkrižne poizvedbe, še posebej, kot izjave (tiste v stavku WHERE). Podpoizvedbe kot izhod (tiste na seznamu izberite), niso dovoljene v navzkrižne poizvedbe.



Razširite poznavanje Officea
Oglejte si izobraževanje
Prvi dobite nove funkcije
Pridružite se programu Office Insider

Vam je bila informacija v pomoč?

Zahvaljujemo se vam za povratne informacije.

Zahvaljujemo se vam za povratne informacije. Videti je, da bi vam prišla prav pomoč enega od naših Officeovih agentov za podporo.

×