SELECT (Entity SQL)SELECT (Entity SQL)

Specifica gli elementi restituiti da una query.Specifies the elements returned by a query.

SintassiSyntax

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  

ArgomentiArguments

ALLALL
Specifica che nel set di risultati possono essere inclusi duplicati.Specifies that duplicates can appear in the result set. ALL è l'argomento predefinito.ALL is the default.

DISTINCTDISTINCT
Specifica che nel set di risultati possono essere inclusi solo risultati univoci.Specifies that only unique results can appear in the result set.

VALUEVALUE
Consente di specificare un solo elemento e non aggiunge un wrapper di riga.Allows only one item to be specified, and does not add on a row wrapper.

topSubclause
Qualsiasi espressione valida che indica il numero dei primi risultati che devono essere restituiti dalla query, nel formato top (``expr``).Any valid expression that indicates the number of first results to return from the query, of the form top (``expr``).

Il parametro LIMIT del ORDER BY operatore consente inoltre di selezionare i primi n elementi nel set di risultati.The LIMIT parameter of the ORDER BY operator also lets you select the first n items in the result set.

aliasedExpr
Espressione nel formato seguente:An expression of the form:

expr come identifier| exprexpr as identifier | expr

expr
Valore letterale o espressione.A literal or expression.

NoteRemarks

La clausola SELECT viene valutata dopo il FROM, GROUP BY, e HAVING clausole sono state valutate.The SELECT clause is evaluated after the FROM, GROUP BY, and HAVING clauses have been evaluated. La clausola SELECT può fare riferimento solo agli elementi attualmente inclusi nell'ambito (dalla clausola FROM o da ambiti esterni).The SELECT clause can only refer to items currently in-scope (from the FROM clause, or from outer scopes). Se è stata specificata una clausola GROUP BY, la clausola SELECT può fare riferimento solo agli alias per le chiavi GROUP BY.If a GROUP BY clause has been specified, the SELECT clause is only allowed to reference the aliases for the GROUP BY keys. Il riferimento agli elementi della clausola FROM è consentito solo nelle funzioni di aggregazione.Referring to the FROM clause items is only permitted in aggregate functions.

L'elenco di una o più espressioni di query che seguono la parola chiave SELECT è noto come elenco di selezione o, più formalmente, come proiezione.The list of one or more query expressions following the SELECT keyword is known as the select list, or more formally as the projection. La forma più generale di proiezione è una singola espressione di query.The most general form of projection is a single query expression. Se si seleziona un membro member1 da una raccolta collection1, verrà creata una nuova raccolta di tutti i valori di member1 per ogni oggetto di collection1, come illustrato nell'esempio seguente.If you select a member member1 from a collection collection1, you will produce a new collection of all the member1 values for each object in collection1, as illustrated in the following example.

SELECT collection1.member1 FROM collection1  

Se, ad esempio, customers è una raccolta di tipo Customer con una proprietà Name di tipo string, se si seleziona Name da customers verrà creata una raccolta di stringhe, come illustrato nell'esempio seguente.For example, if customers is a collection of type Customer that has a property Name that is of type string, selecting Name from customers will yield a collection of strings, as illustrated in the following example.

SELECT customers.Name FROM customers AS c  

È anche possibile usare la sintassi JOIN (FULL, INNER, LEFT, OUTER, ON e RIGHT).It is also possible to use JOIN syntax (FULL, INNER, LEFT, OUTER, ON, and RIGHT). ON è obbligatorio per gli inner join e non è consentito per i cross join.ON is required for inner joins and is nto allowed for cross joins.

Clausole SELECT per la selezione di righe e di valoriRow and Value Select Clauses

Entity SQLEntity SQL supporta due varianti della clausola SELECT. supports two variants of the SELECT clause. La prima variante, per la selezione di righe, è identificata dalla parola chiave SELECT e può essere usata per specificare uno o più valori da proiettare. Poiché ai valori restituiti viene aggiunto in modo implicito un wrapper di riga, il risultato dell'espressione di query è sempre un multiset di righe.The first variant, row select, is identified by the SELECT keyword, and can be used to specify one or more values that should be projected out. Because a row wrapper is implicitly added around the values returned, the result of the query expression is always a multiset of rows.

In ogni espressione di query in una clausola per la selezione di righe deve essere specificato un alias.Each query expression in a row select must specify an alias. Se non viene specificato alcun alias, inEntity SQLEntity SQL viene eseguito un tentativo di generare un alias usando le regole di generazione di alias.If no alias is specified,Entity SQLEntity SQL attempts to generate an alias by using the alias generation rules.

L'altra variante della clausola SELECT, per la selezione di valori, è identificata dalla parola chiave SELECT VALUE.The other variant of the SELECT clause, value select, is identified by the SELECT VALUE keyword. Questo tipo di clausola consente di specificare un solo valore e non aggiunge un wrapper di riga.It allows only one value to be specified, and does not add a row wrapper.

Una clausola per la selezione di righe può essere sempre espressa in termini di VALUE SELECT, come illustrato nell'esempio seguente.A row select is always expressible in terms of VALUE SELECT, as illustrated in the following example.

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

Modificatori ALL e DISTINCTAll and Distinct Modifiers

Entrambe le varianti della clausola SELECT in Entity SQLEntity SQL consentono di specificare un modificatore ALL o DISTINCT.Both variants of SELECT in Entity SQLEntity SQL allow the specification of an ALL or DISTINCT modifier. Se viene specificato il modificatore DISTINCT, i duplicati vengono eliminati dalla raccolta prodotta dall'espressione di query, fino alla clausola SELECT inclusa.If the DISTINCT modifier is specified, duplicates are eliminated from the collection produced by the query expression (up to and including the SELECT clause). Se viene specificato il modificatore ALL, non viene eseguita alcuna eliminazione dei duplicati. ALL rappresenta l'impostazione predefinita.If the ALL modifier is specified, no duplicate elimination is performed; ALL is the default.

Differenze rispetto a Transact-SQLDifferences from Transact-SQL

A differenza di Transact-SQL, in Entity SQLEntity SQL non è supportato l'uso dell'argomento * nella clausola SELECT.Unlike Transact-SQL, Entity SQLEntity SQL does not support use of the * argument in the SELECT clause. Entity SQLEntity SQL consente invece alle query di proiettare interi record facendo riferimento agli alias della raccolta dalla clausola FROM, come illustrato nell'esempio seguente.Instead, Entity SQLEntity SQL allows queries to project out entire records by referencing the collection aliases from the FROM clause, as illustrated in the following example.

SELECT * FROM T1, T2  

L'espressione di query Transact-SQLTransact-SQL precedente viene espressa in Entity SQLEntity SQL nel modo seguente.The previous Transact-SQLTransact-SQL query expression is expressed in Entity SQLEntity SQL in the following way.

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

EsempioExample

Nella query Entity SQL seguente viene usato l'operatore SELECT per specificare gli elementi che devono essere restituiti da una query.The following Entity SQL query uses the SELECT operator to specify the elements to be returned by a query. La query è basata sul modello Sales di AdventureWorks.The query is based on the AdventureWorks Sales Model. Per compilare ed eseguire questa query, effettuare le operazioni seguenti:To compile and run this query, follow these steps:

  1. Seguire la procedura indicata in Procedura: eseguire una query che restituisce risultati StructuralType.Follow the procedure in How to: Execute a Query that Returns StructuralType Results.

  2. Passare la query seguente come argomento al metodo ExecuteStructuralTypeQuery :Pass the following query as an argument to the ExecuteStructuralTypeQuery method:

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

Vedere ancheSee Also

Espressioni di queryQuery Expressions
Riferimento a Entity SQLEntity SQL Reference
TOPTOP