SELECT (Entity SQL)

Określa elementy zwracane przez zapytanie.

Składnia

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

Argumenty

ALL Określa, że duplikaty mogą pojawić się w zestawie wyników. All jest wartością domyślną.

DISTINCT Określa, że w zestawie wyników mogą pojawić się tylko unikatowe wyniki.

WARTOŚĆ umożliwia określenie tylko jednego elementu i nie dodaje się do otoki wierszy.

topSubclause Każde prawidłowe wyrażenie wskazujące liczbę pierwszych wyników, które mają być zwracane z zapytania, formularza top(expr).

Parametr LIMIT operatora ORDER BY umożliwia również wybranie pierwszych n elementów w zestawie wyników.

aliasedExpr Wyrażenie formularza:

expr Jako identifier | expr

expr Literał lub wyrażenie.

Uwagi

Klauzula SELECT jest oceniana po ocenie klauzul FROM, GROUP BY i HAVING . Klauzula SELECT może odwoływać się tylko do elementów aktualnie w zakresie (z klauzuli FROM lub z zakresów zewnętrznych). Jeśli określono klauzulę GROUP BY, klauzula SELECT może odwoływać się tylko do aliasów kluczy GROUP BY. Odwołanie do elementów klauzuli FROM jest dozwolone tylko w funkcjach agregujących.

Lista co najmniej jednego wyrażenia zapytania po słowie kluczowym SELECT jest znana jako lista wyboru lub bardziej formalnie jako projekcja. Najbardziej ogólną formą projekcji jest pojedyncze wyrażenie zapytania. Jeśli wybierzesz element członkowski member1 z kolekcji collection1, utworzysz nową kolekcję wszystkich member1 wartości dla każdego obiektu w collection1programie , jak pokazano w poniższym przykładzie.

SELECT collection1.member1 FROM collection1

Na przykład jeśli customers jest kolekcją typu Customer , która ma właściwość Name typu string, wybranie Name z customers polecenia spowoduje uzyskanie kolekcji ciągów, jak pokazano w poniższym przykładzie.

SELECT customers.Name FROM customers AS c

Można również użyć składni JOIN (FULL, INNER, LEFT, OUTER, ON i RIGHT). Włączone jest wymagane dla sprzężeń wewnętrznych i jest nto dozwolone dla sprzężeń krzyżowych.

Klauzule Wyboru wierszy i wartości

Jednostka SQL obsługuje dwa warianty klauzuli SELECT. Pierwszy wariant, wybór wiersza, jest identyfikowany przez słowo kluczowe SELECT i może służyć do określenia jednej lub większej liczby wartości, które mają być przewidywane. Ponieważ otoka wierszy jest niejawnie dodawana wokół zwracanych wartości, wynik wyrażenia zapytania jest zawsze wielozbiorem wierszy.

Każde wyrażenie zapytania w wybranym wierszu musi określać alias. Jeśli nie określono aliasu, program Entity SQL próbuje wygenerować alias przy użyciu reguł generowania aliasów.

Inny wariant klauzuli SELECT, wartość select, jest identyfikowany przez słowo kluczowe SELECT VALUE. Umożliwia określenie tylko jednej wartości i nie dodaje otoki wierszy.

Wybór wiersza jest zawsze czytelny pod względem wartości SELECT, jak pokazano w poniższym przykładzie.

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

Wszystkie i odrębne modyfikatory

Oba warianty funkcji SELECT w jednostce SQL umożliwiają określenie modyfikatora ALL lub DISTINCT. Jeśli określono modyfikator DISTINCT, duplikaty zostaną wyeliminowane z kolekcji utworzonej przez wyrażenie zapytania (do klauzuli SELECT). Jeśli określono modyfikator ALL, nie jest wykonywana żadna zduplikowana eliminacja; All jest wartością domyślną.

Różnice w języku Transact-SQL

W przeciwieństwie do języka Transact-SQL język Entity SQL nie obsługuje użycia argumentu * w klauzuli SELECT. Zamiast tego usługa Entity SQL umożliwia wykonywanie zapytań w celu projekcji całych rekordów, odwołując się do aliasów kolekcji z klauzuli FROM, jak pokazano w poniższym przykładzie.

SELECT * FROM T1, T2

Poprzednie wyrażenie zapytania Języka Transact-SQL jest wyrażane w języku Entity SQL w następujący sposób.

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

Przykład

Następujące zapytanie Entity SQL używa operatora SELECT, aby określić elementy, które mają być zwracane przez zapytanie. Zapytanie jest oparte na modelu AdventureWorks Sales. Aby skompilować i uruchomić to zapytanie, wykonaj następujące kroki:

  1. Postępuj zgodnie z procedurą w temacie Instrukcje: wykonywanie zapytania zwracającego wyniki StructuralType.

  2. Przekaż następujące zapytanie jako argument do ExecuteStructuralTypeQuery metody :

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

Zobacz też