Office
Log på

SQL-underforespørgsler

Bemærk!: Vi vil gerne give dig den mest opdaterede hjælp, så hurtigt vi kan, på dit eget sprog. Denne side er oversat ved hjælp af automatisering og kan indeholde grammatiske fejl og unøjagtigheder. Det er vores hensigt, at dette indhold skal være nyttigt for dig. Vil du fortælle os, om oplysningerne var nyttige for dig, nederst på denne side? Her er artiklen på engelsk så du kan sammenligne.

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

Syntaks

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

sammenligning [ALLE | ALLE | Nogle] (SQL-udtryk)

udtryk [NOT] I (SQL-udtryk)

[NOT] EXISTS (SQL-udtryk)

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

Del

Beskrivelse

sammenligning

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

udtryk

Et udtryk, der søges på resultatsættet af underforespørgslen.

sqlstatement

En SELECT-sætning, følge de samme formater og regler, som en hvilken som helst anden SELECT-sætning. Det skal stå i parenteser.


Bemærkninger

Du kan bruge en underforespørgsel i stedet for et udtryk i feltlisten til en SELECT-sætning eller i en WHERE- eller HAVING-delsætning. I en underforespørgsel kan bruge du en SELECT-sætning til at levere et sæt af en eller flere bestemte værdier skal evalueres i WHERE- eller HAVING-delsætningsudtryk.

Brug prædikatet alle eller nogle, som er synonyme, til at hente poster i den primære forespørgsel, der opfylder sammenligningen med alle poster, der er hentet i underforespørgslen. I følgende eksempel returneres alle produkter, hvis enhedspris er større end af et produkt, der er solgt med en rabat på 25% eller mere:

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

Bruge hurtigere for at hente kun disse poster i den primære forespørgsel, der opfylder sammenligningen med alle de poster, der er hentet i underforespørgslen. Hvis du ændrer ANY til alle i det forrige eksempel, returneres kun produkter, hvis enhedspris er større end værdien af alle produkter, der er solgt med en rabat på 25% eller mere. Dette er meget mere restriktivt.

Brug prædikatet IN til at hente kun posterne i den primære forespørgsel som en post i underforespørgslen indeholder den samme værdi. I 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 at hente kun posterne i den primære forespørgsel, som ikke er nogen poster i underforespørgslen indeholder den samme værdi.

Bruge SELECT-sætninger; (med valgfrit ikke reserverede ord) i sand/falsk sammenligninger til at bestemme, om underforespørgslen returnerer alle 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 det foregående eksempel er som reserveret ord 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.



Udvid dine Office-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.

×