Compartilhar via


SELECT (Entity SQL)

Especifica os elementos retornados por uma consulta.

Sintaxe

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

Argumentos

ALL Especifica que as duplicatas podem aparecer no conjunto de resultados. ALL é o padrão.

DISTINCT Especifica que somente os resultados exclusivos podem aparecer no conjunto de resultados.

VALUE Permite que apenas um item seja especificado e não é adicionado em um wrapper de linha.

topSubclause Qualquer expressão válida que indique o número dos primeiros resultados a serem retornados da consulta, do formulário top(expr).

O parâmetro LIMIT do operador ORDER BY também permite que você selecione os primeiros n itens no conjunto de resultados.

aliasedExpr Uma expressão do formulário:

expr como identifier | expr

expr Uma literal ou expressão.

Observações

A cláusula SELECT é avaliada após a avaliação das cláusulas FROM, GROUP BY e HAVING . A cláusula SELECT só pode se referir a itens atualmente no escopo (da cláusula FROM ou de escopos externos). Se uma cláusula GROUP BY tiver sido especificada, a cláusula SELECT só poderá referenciar os aliases para as chaves GROUP BY. Fazer referência aos itens da cláusula FROM só é permitido em funções de agregação.

A lista de uma ou mais expressões de consulta após a palavra-chave SELECT é conhecida como a lista de seleção ou mais formalmente como a projeção. A forma mais geral de projeção é uma única expressão de consulta. Se você selecionar um membro member1 de uma coleção collection1, produzirá uma nova coleção de todos os member1 valores para cada objeto, collection1conforme ilustrado no exemplo a seguir.

SELECT collection1.member1 FROM collection1

Por exemplo, se customers for uma coleção de tipo Customer que tenha uma propriedade Name do tipo string, a seleção Namecustomers produzirá uma coleção de cadeias de caracteres, conforme ilustrado no exemplo a seguir.

SELECT customers.Name FROM customers AS c

Também é possível usar a sintaxe JOIN (FULL, INNER, LEFT, OUTER, ON e RIGHT). ON é necessário para junções internas e é permitido para junções cruzadas.

Cláusulas De Seleção de Linha e Valor

O SQL de entidade dá suporte a duas variantes da cláusula SELECT. A primeira variante, a seleção de linha, é identificada pela palavra-chave SELECT e pode ser usada para especificar um ou mais valores que devem ser projetados. Como um wrapper de linha é adicionado implicitamente em torno dos valores retornados, o resultado da expressão de consulta é sempre um multiconjunto de linhas.

Cada expressão de consulta em uma seleção de linha deve especificar um alias. Se nenhum alias for especificado, o SQL da Entidade tentará gerar um alias usando as regras de geração de alias.

A outra variante da cláusula SELECT, seleção de valor, é identificada pela palavra-chave SELECT VALUE. Ele permite que apenas um valor seja especificado e não adiciona um wrapper de linha.

Uma seleção de linha é sempre expressível em termos de VALUE SELECT, conforme ilustrado no exemplo a seguir.

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

Modificadores Todos e Distintos

Ambas as variantes de SELECT no Entity SQL permitem a especificação de um modificador ALL ou DISTINCT. Se o modificador DISTINCT for especificado, as duplicatas serão eliminadas da coleção produzida pela expressão de consulta (até e incluindo a cláusula SELECT). Se o modificador ALL for especificado, nenhuma eliminação duplicada será executada; ALL é o padrão.

Diferenças de Transact-SQL

Ao contrário do Transact-SQL, o Entity SQL não dá suporte ao uso do argumento * na cláusula SELECT. Em vez disso, o Entity SQL permite que as consultas projevam registros inteiros fazendo referência aos aliases da coleção da cláusula FROM, conforme ilustrado no exemplo a seguir.

SELECT * FROM T1, T2

A expressão de consulta Transact-SQL anterior é expressa no Entity SQL da seguinte maneira.

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

Exemplo

A consulta SQL de entidade a seguir usa o operador SELECT para especificar os elementos a serem retornados por uma consulta. A consulta é baseada no Modelo de Vendas adventureworks. Para compilar e executar essa consulta, siga estas etapas:

  1. Siga o procedimento em How to: Execute a Query that Returns StructuralType Results.

  2. Passe a consulta a seguir como um argumento para o ExecuteStructuralTypeQuery método:

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

Consulte também