Delen via


SELECT (Entiteit SQL)

Hiermee geeft u de elementen op die worden geretourneerd door een query.

Syntaxis

SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr
      [{ , aliasedExpr }] FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause ]
-- or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr FROM fromClause [ WHERE whereClause ] [ GROUP BY groupByClause [ HAVING havingClause ] ] [ ORDER BY orderByClause

Argumenten

ALL Geeft aan dat duplicaten kunnen worden weergegeven in de resultatenset. ALL is de standaardinstelling.

DISTINCT Geeft aan dat alleen unieke resultaten kunnen worden weergegeven in de resultatenset.

MET WAARDE kan slechts één item worden opgegeven en wordt niet toegevoegd aan een rij-wrapper.

topSubclause Elke geldige expressie die het aantal eerste resultaten aangeeft dat moet worden geretourneerd uit de query, van het formulier top(expr).

Met de parameter LIMIT van de operator ORDER BY kunt u ook de eerste n items in de resultatenset selecteren.

aliasedExpr Een expressie van het formulier:

expr Als identifier | expr

expr Een letterlijke of expressie.

Opmerkingen

De SELECT-component wordt geëvalueerd nadat de component FROM, GROUP BY en HAVING is geëvalueerd. De SELECT-component kan alleen verwijzen naar items die momenteel binnen het bereik vallen (vanuit de FROM-component of vanuit buitenste bereiken). Als er een GROUP BY-component is opgegeven, mag de SELECT-component alleen verwijzen naar de aliassen voor de GROUP BY-sleutels. Het verwijzen naar de FROM-componentitems is alleen toegestaan in statistische functies.

De lijst met een of meer query-expressies na het trefwoord SELECT wordt de select-lijst genoemd, of formeel gezien als de projectie. De meest algemene vorm van projectie is één query-expressie. Als u een lid member1 uit een verzameling collection1selecteert, maakt u een nieuwe verzameling van alle member1 waarden voor elk object in collection1, zoals wordt geïllustreerd in het volgende voorbeeld.

SELECT collection1.member1 FROM collection1

Als dit bijvoorbeeld customers een verzameling van het type Customer is die een eigenschap Name van het type stringheeft, levert een selectie Namecustomers van tekenreeksen op, zoals wordt geïllustreerd in het volgende voorbeeld.

SELECT customers.Name FROM customers AS c

Het is ook mogelijk om JOIN-syntaxis (FULL, INNER, LEFT, OUTER, ON en RIGHT) te gebruiken. AAN is vereist voor inner joins en is toegestaan voor cross joins.

Componenten voor rij- en waardeselectie

Entity SQL ondersteunt twee varianten van de SELECT-component. De eerste variant, rijselectie, wordt geïdentificeerd door het sleutelwoord SELECT en kan worden gebruikt om een of meer waarden op te geven die moeten worden geprojecteerd. Omdat een rijwikkelaar impliciet wordt toegevoegd rond de geretourneerde waarden, is het resultaat van de query-expressie altijd een multiset rijen.

Elke query-expressie in een rij selecteren moet een alias opgeven. Als er geen alias is opgegeven, probeert Entity SQL een alias te genereren met behulp van de regels voor het genereren van aliassen.

De andere variant van de SELECT-component, waardeselectie, wordt geïdentificeerd door het trefwoord SELECT VALUE. Hiermee kan slechts één waarde worden opgegeven en wordt er geen rijwikkelaar toegevoegd.

Een rijselectie kan altijd worden uitgedrukt in termen van VALUE SELECT, zoals wordt geïllustreerd in het volgende voorbeeld.

SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C

Alle en afzonderlijke modifiers

Beide varianten van SELECT in Entity SQL maken de specificatie van een ALL- of DISTINCT-wijzigingsfunctie mogelijk. Als de DISTINCT-modifier is opgegeven, worden duplicaten verwijderd uit de verzameling die wordt geproduceerd door de query-expressie (tot en met de SELECT-component). Als de ALL-modifier is opgegeven, wordt er geen dubbele verwijdering uitgevoerd; ALL is de standaardinstelling.

Verschillen met Transact-SQL

In tegenstelling tot Transact-SQL biedt Entity SQL geen ondersteuning voor het gebruik van het argument * in de SELECT-component. In plaats daarvan kunnen query's met Entity SQL volledige records uit projecteren door te verwijzen naar de verzamelingsaliassen uit de FROM-component, zoals wordt geïllustreerd in het volgende voorbeeld.

SELECT * FROM T1, T2

De vorige Transact-SQL-queryexpressie wordt op de volgende manier uitgedrukt in Entity SQL.

SELECT a1, a2 FROM T1 AS a1, T2 AS a2

Opmerking

De volgende Entiteit SQL-query maakt gebruik van de SELECT-operator om de elementen op te geven die moeten worden geretourneerd door een query. De query is gebaseerd op het AdventureWorks Sales Model. Voer de volgende stappen uit om deze query te compileren en uit te voeren:

  1. Volg de procedure in Procedure: Voer een query uit die StructureleType-resultaten retourneert.

  2. Geef de volgende query als argument door aan de ExecuteStructuralTypeQuery methode:

SELECT VALUE product FROM AdventureWorksEntities.Products 
    AS product WHERE product.ListPrice < @price

Zie ook