SQL-delspørringer

Viktig: Denne artikkelen er maskinoversatt, se ansvarsfraskrivelsen. Du finner den engelske versjonen av artikkelen her som referanse.

En delspørring er en SELECT-setning som er nestet i en SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- eller UPDATE-setning eller i en annen delspørring.

Syntaks

Du kan bruke tre former for syntaks til å opprette en delspørring:

sammenligning [ANY | ALL | SOME] (sql-setning)

uttrykk [NOT] IN (sql-setning)

[NOT] EXISTS (sql-setning)

En delspørring har følgende deler:

Del

Beskrivelse

sammenligning

Et uttrykk og en sammenligningsoperator som sammenligner uttrykket med resultatene av delspørringen.

uttrykk

Et uttrykk som det søkes etter i resultatsettet av delspørringen.

sql-setning

En SELECT-setning som følger det samme formatet og reglene til hvilken som helst annen SELECT-setning. Den må settes i parentes.


Kommentarer

Du kan bruke en delspørring i stedet for et uttrykk i feltlisten i en SELECT-setning eller i en WHERE- eller HAVING- setningsdel. I en delspørring kan du bruke en SELECT-setning for å angi et sett med én eller flere bestemte verdier som kan evalueres, i WHERE- eller HAVING-delsetningsuttrykket.

Bruk ANY- eller SOME-predikatet som er synonyme, til å hente poster fra hovedspørringen som fullfører sammenligningen med poster hentet fra delspørringen. I eksempelet nedenfor returneres alle varer med en enhetspris som er større enn prisen på den varen som selges med 25 prosent rabatt eller mer:

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

Bruk ALL-predikatet for å hente bare de postene fra hovedspørringen som fullfører sammenligningen med alle poster hentet fra delspørringen. Hvis du endret ANY til ALL i forrige eksempel, returnerer spørringen bare de varene med en enhetspris som er større enn på alle varene som selges med 25 prosent rabatt eller mer. Dette er mye mer begrenset.

Bruk IN-predikatet for å hente bare de postene fra hovedspørringen som en post i delspørringen inneholder en lik verdi for. I eksemplet nedenfor returneres alle varer med 25 prosent rabatt eller mer:

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

Du kan derimot bruke NOT IN for å hente bare de postene i hovedspørringen som ingen post i delspørringen inneholder en lik verdi for.

Bruk EXISTS-predikatet (med det valgfrie og reserverte ordet NOT) i sann/usann-sammenligninger for å avgjøre om delspørringen returnerer poster.

Du kan også bruke aliaser for tabellnavn i en delspørring til å referere til tabeller i en FROM-setningsdel utenfor delspørringen. Følgende eksempel returnerer navnene på ansatte som har lønn lik eller større enn gjennomsnittlig lønn til alle ansatte med samme stilling. Ansatte-tabellen er gitt aliaset "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;

I forrige eksempel er det reservert ord AS valgfritt.

Noen delspørringer er tillatt i krysstabellspørringer – spesielt som predikater (de i WHERE-setningsdelen). Delspørringer som utdata (de i SELECT-listen) er ikke tillatt i krysstabellspørringer.



Merknad: Ansvarsfraskrivelse for maskinoversettelse: Denne artikkelen er oversatt av et datasystem i stedet for en oversetter. Microsoft tilbyr disse maskinoversettelsene slik at brukere som ikke snakker engelsk, får tilgang til innhold om Microsoft-produkter, -tjenester og –teknologier. Ettersom artikkelen er maskinoversatt, kan den inneholde feil i vokabular, syntaks eller grammatikk.

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×