SQL-alikyselyt

Huomautus:  Microsoft haluaa tarjota sinulle ajantasaisinta ohjesisältöä mahdollisimman nopeasti omalla kielelläsi. Tämä sivu on käännetty automaation avulla, ja siinä saattaa olla kielioppivirheitä tai epätarkkuuksia. Tarkoitus on, että sisällöstä on sinulle hyötyä. Kertoisitko sivun alareunassa olevan toiminnon avulla, oliko tiedoista hyötyä? Tästä pääset helposti artikkelin englanninkieliseen versioon .

Alikysely on SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- tai UPDATE-lauseeseen tai toiseen alikyselyyn sisältyvä SELECT-lause.

Syntaksi

Alikysely voidaan luoda kolmen eri syntaksin avulla:

vertailu [ANY | ALL | SOME] (sql-lause)

lauseke [NOT] IN (sql-lause)

[NOT] EXISTS (sql-lause)

Alikyselyssä on seuraavat osat:

Osa:

Kuvaus:

vertailu

lauseke ja vertailuoperaattori, joka vertaa lauseketta alikyselyn tuloksiin.

lauseke

Lauseke, jota alikyselyn tulosjoukosta haetaan.

sql-lause

SELECT-lause, joka noudattaa samaa muotoa ja samoja sääntöjä kuin muut SELECT-lauseet. Lauseeseen on lisättävä sulkeet.


Huomautuksia

Voit käyttää alikyselyä lausekkeen asemesta SELECT-lauseen kenttäluettelossa tai WHERE- tai HAVING-lauseessa. Alikyselyssä käytetään SELECT-lausetta määrittämään yksi tai usea arvo arvioitavaksi WHERE- tai HAVING-lauseessa.

Käytä ANY- tai SOME-predikaattia (jotka tarkoittavat samaa), jos haluat noutaa pääkyselystä tietueita, jotka vastaavat vertailtaessa mitä tahansa alikyselyssä noudettuja tietueita. Seuraavassa esimerkissä kysely palauttaa kaikki tuotteet, joiden yksikköhinta on suurempi kuin minkään vähintään 25 prosentin alennuksella myydyn tuotteen yksikköhinta:

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

Käytä ALL-predikaattia, jos haluat noutaa pääkyselystä vain ne tietueet, jotka vastaavat vertailtaessa kaikkia alikyselyssä noudettuja tietueita. Jos vaihdoit edellisessä esimerkissä ANY-predikaatin ALL-predikaattiin, kysely palauttaa vain ne tuotteet, joiden yksikköhinta on suurempi kuin kaikkien vähintään 25 prosentin alennuksella myytyjen tuotteiden yksikköhinta. Kysely on tällöin paljon tarkempi.

Käytä IN-predikaattia, jos haluat noutaa pääkyselystä vain ne tietueet, joita vastaavan arvon jokin alikyselyn tietue sisältää. Seuraavassa esimerkissä kysely palauttaa kaikki tuotteet, jotka myydään vähintään 25 prosentin alennuksella:

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

Vastaavasti voit käyttää NOT IN -predikaattia, jos haluat noutaa pääkyselystä vain ne tietueet, joita vastaavaa arvoa yksikään alikyselyn tietue ei sisällä.

Käytä EXISTS-predikaattia (valinnaisen varatun sanan NOT kanssa) tosi/epätosi-vertailuissa sen selvittämiseksi, palauttaako alikysely tietueita.

Voit käyttää myös taulukon aliakset alikyselyssä viitataan taulukoiden FROM-lauseen alikyselyn ulkopuolella. Seuraava esimerkki palauttaa työntekijät, joiden palkat on yhtä suuri kuin tai suurempi kuin kaikkien työntekijöiden ottaa saman tehtävänimike keskimääräinen palkat nimet. Työntekijät-taulukko on annettu tunnus ”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;

Edellisessä esimerkissä varattu sana AS on valinnainen.

Jotkin alikyselyt sallitaan Ristiintaulukointikyselyt, erityisesti kuin predikaatit (kaltaisia WHERE-lauseen). Alikyselyjen kuin tulos (kaltaisia SELECT-luettelossa) eivät ole sallittuja Ristiintaulukointikyselyt.



Kehitä Office-taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×