SQL-alikyselyt

Tärkeää: Tämä on artikkeli on käännetty koneellisesti. Lue vastuuvapauslauseke. Tämän artikkelin englanninkielinen versio on täällä .

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.



Huomautus: Konekäännöksestä ilmoittava vastuusvapauslauseke: Tämä artikkeli on käännetty tietokonejärjestelmällä, eikä kieliasiantuntija ole muokannut sitä. Microsoft tarjoaa nämä konekäännökset avuksi muille kuin englantia puhuville käyttäjille, jotta he saavat lisätietoja Microsoftin tuotteista, palveluista ja tekniikoista. Koska artikkeli on koneellisesti käännetty, se saattaa sisältää sanasto-, lauseoppi- ja kielioppivirheitä.

Kehitä 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ä.

×