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 ugnezdena SELECT, SELECT... VSTAVI... Izjava v, brisanje ali posodabljanje ali znotraj druge podpoizvedbe.

Sintaksa

Če želite ustvariti podpoizvedbo lahko uporabite tri oblike sintakse:

primerjava [VSE | VSE | NEKATERE] (sqlstatement)

izraz [NE] V (sqlstatement)

[NE] OBSTAJA (sqlstatement)

Podpoizvedba je sestavljena iz teh delov:

Del

Opis

primerjava

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

expression

Izraz, za katerega je iskali nabor rezultatov podpoizvedbe.

sqlstatement

Izjava SELECT, ki spremljajo isto oblikovanje in pravil kot katera koli Izjava SELECT. Morate postaviti v oklepaje.


Opombe

Podpoizvedbo lahko uporabite namesto izraza na seznamu polj izjave SELECT ali v stavku WHERE ali stavek HAVING. Izjavo SELECT uporabite v podpoizvedbo, če nabor enega ali več določenih vrednosti za oceno kje izrazu ali HAVING.

Uporabite vse ali nekatere temeljno sopomenki, če želite pridobiti zapise v glavni poizvedbi, ki izpolnjujejo v primerjavi z zapisi, ki je vrnila podpoizvedba. Naslednji primer vrne vse izdelke, katerih cena enote je večji od katerega koli izdelka, ki je prodal s 25 % ali več popusta:

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 izpolnjujejo pogoje primerjave z vsemi zapisi podpoizvedbe. Če ste spremenili nekaj za vse v prejšnjem primeru, bo poizvedba vrnila samo tiste izdelke, katerih cena enote je večja kot pri vseh izdelkov, prodanih s 25 % ali več popusta. To je precej bolj omejeno.

Če želite pridobiti samo tiste zapise v glavni poizvedbi, za katere nekaj zapis v podpoizvedbe enako vrednost, uporabite izjavo. Naslednji primer vrne vse izdelke s popustom 25 odstotkov ali več:

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

In obratno, lahko uporabite NOT IN, če želite pridobiti samo tiste zapise v glavni poizvedbi, za katere noben zapis v podpoizvedbe enake vrednosti.

Uporabite izjavo EXISTS (z izbirno ni rezervirana beseda) pri primerjanju pravilno/napačno, da določi, ali naj podpoizvedba vrne vse zapise.

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 prejšnjem primeru, kot je rezervirana beseda je izbiren.

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.

×