SQL-underforespørgsler

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

En underforespørgsel er en SELECT-sætning, der er indlejret i en SELECT-, SELECT...INTO-, INSERT...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:

sammenligning [ANY | ALL | SOME] (sqlsætning)

udtryk [NOT] IN (sqlsætning)

[NOT] EXISTS (sqlsætning)

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

Del

Beskrivelse

sammenligning

Et udtryk og en sammenligningsoperator, der sammenligner udtrykket med resultatet af underforespørgslen.

udtryk

Et udtryk, der søges i for at finde resultatsættet for underforespørgslen.

sqlsætning

En SELECT-sætning, der har samme format, og som følger de samme 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 i feltlisten i en SELECT-sætning eller i en WHERE- eller HAVING-delsætning. I en underforespørgsel kan du angive en SELECT-sætning for at stille en eller flere bestemte værdier til rådighed, som skal evalueres i WHERE- eller HAVING-delsætningsudtryk.

Brug prædikatet ANY eller SOME, som er synonyme, til at hente de poster i hovedforespørgslen, som opfylder sammenligningen med andre poster, der er hentet i underforespørgslen. I følgende eksempel returneres alle produkter, hvis enhedspris er større end enhedsprisen for et hvilket som helst produkt, der er solgt med en rabat på 25% 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 poster, som er hentet i underforespørgslen. Hvis du ændrer ANY til ALL i det forrige eksempel, returneres kun de produkter, hvis enhedspris er større end enhedsprisen for alle produkter, der er solgt med en rabat på 25% eller mere. Dette er meget mere restriktivt.

Brug prædikatet IN til kun at hente de poster i hovedforespørgslen, som en post i underforespørgslen indeholder den samme værdi for. I det følgende eksempel returneres alle produkter med en rabat på 25% eller mere:

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

Omvendt kan du bruge NOT IN til kun at hente de poster i hovedforespørgslen, som ingen post i underforespørgslen indeholder den samme værdi for.

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

Du kan også bruge navn tabelaliasser 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å de medarbejdere, hvis løn er lig med eller større end analysere dataene for alle medarbejdere med samme stilling. Tabellen medarbejdere er givet alias "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 ovenstående eksempler er det reserveret ord AS valgfrit.

Nogle underforespørgsler er tilladt i krydstabuleringsforespørgsler – især som prædikaterne (dem i WHERE-delsætningen). Underforespørgsler som output (dem på listen VÆLG) er ikke tilladt i krydstabuleringsforespørgsler.



Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×