Vpišite se z Microsoftovim
Vpišite se ali ustvarite račun.
Pozdravljeni,
Izberite drug račun.
Imate več računov
Izberite račun, s katerim se želite vpisati.

Podpoizvedba je izjava SELECT, ugnezdena znotraj izjave SELECT, SELECT ... INTO, INSERT ... IZJAVA INTO, DELETE ali UPDATE ali v drugi podpoizvedbah.

Sintaksa

Podpoizvedbo lahko ustvarite s tremi oblikami sintakse:

primerjava [ANY | VSE | NEKAJ] (sqlstatement)

izraz [NOT] IN (sqlstatement)

[NOT] EXISTS (sqlstatement)

Podpoizvedba je sestavljena iz teh delov:

Del

Opis

Primerjava

Izraz izraz operatorjem primerjave, ki primerja izraz z rezultati podpoizvedbe.

izraz

Izraz, za katerega je preiskan nabor rezultatov podpoizvedbe.

sqlstatement

Izjava SELECT, ki upošteva enako obliko zapisa in pravila kot katera koli druga izjava SELECT. Obdan mora biti z oklepaji.


Opombe

Podpoizvedbo lahko uporabite namesto izraza na seznamu polj izjave SELECT ali v stavku WHERE ali HAVING. V podpoizvedbo z izjavo SELECT zagotovite nabor ene ali več določenih vrednosti, ki jih želite ovrednotiti v izrazu stavka WHERE ali HAVING.

Uporabite predikat ANY ali SOME, ki je sopomenka, če želite pridobiti zapise v glavni poizvedbi, ki izpolnjujejo pogoje primerjave s katerimi koli zapisi, pridobljenimi v podpoizvedbo. Spodnji primer vrne vse izdelke, katerih cena enote je večja od cene katerega koli izdelka, prodanega s popustom 25 odstotkov ali več:

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

Predikat ALL uporabite, če želite pridobiti le tiste zapise v glavni poizvedbi, ki izpolnjujejo pogoje primerjave z vsemi zapisi, pridobljenimi v podpoizvedbo. Če ste v prejšnjem primeru vrednost ANY spremenili v VSE, bo poizvedba vrnila le tiste izdelke, katerih cena enote je večja od cene vseh izdelkov, prodanih s popustom 25 odstotkov ali več. To je veliko bolj omejujoče.

Predikat IN uporabite, če želite pridobiti le tiste zapise v glavni poizvedbi, za katere nekateri zapisi v podpoizvedbe vsebujejo enako vrednost. Spodnji primer vrne vse izdelke s popustom 25 odstotkov ali več:

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

Nasprotno pa lahko uporabite NOT IN, če želite pridobiti le tiste zapise v glavni poizvedbi, za katere noben zapis v podpoizvedbe ne vsebuje enake vrednosti.

Predikat EXISTS (z izbirno rezervirano besedo NOT) uporabite v primerjavah resnično/neresnično, če želite ugotoviti, ali podpoizvedba vrne kateri koli zapis.

Vzdevke imen tabele lahko uporabite tudi v podpoizvedbah, če se želite sklicevati na tabele, navedene v stavku FROM zunaj podpoizvedbe. Spodnji primer vrne imena zaposlenih, katerih plače so enake ali večje od povprečne plače vseh zaposlenih z enakim nazivom delovnega mesta. Tabela »Zaposleni« ima vzdevek »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;

V prejšnjem primeru je pogoj AS rezervirana beseda izbiren.

Nekatere podpoizvedbe so dovoljene v navzkrižnih poizvedbah – še posebej kot predikate (tiste v stavku WHERE). Podpoizvedbe kot izhodi (tiste na seznamu SELECT) niso dovoljene v navzkrižnih poizvedbah.



Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.

Vam je bila informacija v pomoč?

Kako ste zadovoljni s kakovostjo jezika?
Kaj je vplivalo na vašo izkušnjo?
Če pritisnete »Pošlji«, bomo vaše povratne informacije uporabili za izboljšanje Microsoftovih izdelkov in storitev. Vaš skrbnik za IT bo lahko zbiral te podatke. Izjavi o zasebnosti.

Zahvaljujemo se vam za povratne informacije.

×