Podpoizvedbe SQL

Pomembno : Besedilo članka je prevedeno strojno. Glejte zavrnitev odgovornosti. Angleško različico tega članka najdete tukaj .

Podpoizvedba je izjava SELECT, ugnezdena v izjavah 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.



Opomba : Strojni prevod – zavrnitev odgovornosti: Ta članek je bil preveden z računalniškim programom brez človeškega posredovanja. Microsoft skuša s strojno prevedenimi članki vsebino o Microsoftovih izdelkih, storitvah in tehnologijah približati osebam, ki ne razumejo angleščine. Ker je bil članek strojno preveden, so lahko v njem jezikovne, slovnične in pravopisne napake.

Razširite svoja znanja
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.

×