Log på med Microsoft
Log på, eller opret en konto.
Hej
Markér en anden konto.
Du har flere konti
Vælg den konto, du vil logge på med.

En underforespørgsel er en SELECT-sætning indlejret i en SELECT, SELECT... IND, INDSÆT... INTO-, DELETE- eller UPDATE-sætning eller inde i en anden underforespørgsel.

Syntaks

Du kan bruge tre former for syntaks til at oprette en underforespørgsel:

comparison [ANY | ALLE | SOME] (sqlstatement)

udtryk [NOT] IN (sqlstatement)

[IKKE] EXISTS (sqlstatement)

En underforespørgsel består af følgende dele:

Del

Beskrivelse

Sammenligning

En udtryk og en sammenligningsoperator, der sammenligner udtrykket med resultaterne af underforespørgslen.

udtryk

Et udtryk, der søges efter resultatsættet for underforespørgslen efter.

sqlstatement

En SELECT-sætning, der følger samme format og regler som enhver anden SELECT-sætning. Den skal være omsluttet af parenteser.


Bemærkninger

Du kan bruge en underforespørgsel i stedet for et udtryk på feltlisten i en SELECT-sætning eller i en WHERE- eller HAVING-delsætning. I en underforespørgsel skal du bruge en SELECT-sætning til at angive et sæt af en eller flere specifikke værdier, der skal evalueres i WHERE- eller HAVING-delsætningsudtrykket.

Brug prædikatet ANY eller SOME, som er synonymer, til at hente poster i hovedforespørgslen, der opfylder sammenligningen med eventuelle poster, der er hentet i underforespørgslen. I følgende eksempel returneres alle produkter, hvis enhedsprisen er større end prisen på et produkt, der sælges med en rabat på 25 procent eller mere:

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

Brug prædikatet ALL til kun at hente de poster i hovedforespørgslen, der opfylder sammenligningen med alle de poster, der er hentet i underforespørgslen. Hvis du har ændret ANY til ALLE i det forrige eksempel, returnerer forespørgslen kun de produkter, hvis enhedsprisen er større end prisen på alle produkter, der sælges med en rabat på 25 procent eller mere. Dette er meget mere restriktivt.

Brug prædikatet IN til kun at hente de poster i hovedforespørgslen, hvor nogle poster i underforespørgslen indeholder en lige værdi. I følgende eksempel returneres alle produkter med en rabat på 25 procent eller mere:

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

Omvendt kan du kun bruge NOT IN til at hente de poster i hovedforespørgslen, hvor ingen post i underforespørgslen indeholder en tilsvarende værdi.

Brug prædikatet EXISTS (med det valgfrie IKKE-reserverede ord) i sand/falsk-sammenligninger til at afgøre, om underforespørgslen returnerer nogen poster.

Du kan også bruge tabelnavnaliasser i en underforespørgsel til at referere til tabeller, der er angivet i en FROM-delsætning uden for underforespørgslen. I følgende eksempel returneres navnene på medarbejdere, hvis lønninger er lig med eller større end den gennemsnitlige løn for alle medarbejdere med samme stillingsbetegnelse. Tabellen Medarbejdere får aliasset "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 det foregående eksempel er AS- reserveret ord valgfri.

Nogle underforespørgsler er tilladt i krydstabuleringsforespørgsler – specifikt som prædikater (dem i WHERE-delsætningen). Underforespørgsler som output (dem på SELECT-listen) er ikke tilladt i krydstabuleringsforespørgsler.



Har du brug for mere hjælp?

Vil du have flere indstillinger?

Udforsk abonnementsfordele, gennemse kurser, få mere at vide om, hvordan du sikrer din enhed og meget mere.

Communities hjælper dig med at stille og besvare spørgsmål, give feedback og høre fra eksperter med omfattende viden.

Var disse oplysninger nyttige?

Hvor tilfreds er du med kvaliteten af sproget?
Hvad påvirkede din oplevelse?
Når du trykker på Send, bliver din feedback brugt til at forbedre Microsoft-produkter og -tjenester. Din it-administrator kan indsamle disse data. Erklæring om beskyttelse af personlige oplysninger.

Tak for din feedback!

×