Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Určuje prvky vrácené dotazem.
Syntaxe
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 Určuje, že duplicity mohou být zobrazeny v sadě výsledků. All je výchozí hodnota.
DISTINCT Určuje, že se v sadě výsledků můžou zobrazit pouze jedinečné výsledky.
HODNOTA Umožňuje zadat pouze jednu položku a nepřidá se do obálky řádku.
topSubclause Libovolný platný výraz, který označuje počet prvních výsledků, které se mají vrátit z dotazu formuláře top(expr).
Parametr LIMIT operátoru ORDER BY umožňuje také vybrat první n položek v sadě výsledků.
aliasedExpr Výraz formuláře:
expr protože identifier | expr
expr Literál nebo výraz.
Poznámky
Klauzule SELECT se vyhodnocuje po vyhodnocení klauzulí FROM, GROUP BY a HAVING . Klauzule SELECT může odkazovat pouze na položky, které jsou aktuálně v oboru (z klauzule FROM nebo z vnějších oborů). Pokud byla zadána klauzule GROUP BY, klauzule SELECT může odkazovat pouze na aliasy pro klíče GROUP BY. Odkaz na položky klauzule FROM je povolen pouze v agregačních funkcích.
Seznam jednoho nebo více výrazů dotazu za klíčovým slovem SELECT se označuje jako seznam výběrů nebo formálněji jako projekce. Nejobecnější forma projekce je jeden výraz dotazu. Pokud vyberete člena member1 z kolekce collection1, vytvoříte novou kolekci všech member1 hodnot pro každý objekt v collection1souboru , jak je znázorněno v následujícím příkladu.
SELECT collection1.member1 FROM collection1
Pokud customers je například kolekce typu Customer , která má vlastnost Name typu string, výběr Name z customers bude poskytovat kolekci řetězců, jak je znázorněno v následujícím příkladu.
SELECT customers.Name FROM customers AS c
Je také možné použít syntaxi JOIN (FULL, INNER, LEFT, OUTER, ON a RIGHT). On je vyžadován pro vnitřní spojení a je povolen nto pro křížové spojení.
Klauzule Výběr řádků a hodnot
Entity SQL podporuje dvě varianty klauzule SELECT. První varianta, výběr řádku, je identifikována klíčovým slovem SELECT a lze ji použít k určení jedné nebo více hodnot, které mají být promítnuty. Vzhledem k tomu, že obálka řádku se implicitně přidává kolem vrácených hodnot, je výsledkem výrazu dotazu vždy více sad řádků.
Každý výraz dotazu ve výběru řádku musí určovat alias. Pokud není zadán žádný alias, entity SQL se pokusí vygenerovat alias pomocí pravidel generování aliasů.
Druhá varianta klauzule SELECT, value select, je identifikována klíčovým slovem SELECT VALUE. Umožňuje zadat pouze jednu hodnotu a nepřidá obálku řádku.
Výběr řádku je vždy vyjádřitelný z hlediska FUNKCE VALUE SELECT, jak je znázorněno v následujícím příkladu.
SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C
Modifikátory all a distinct
Obě varianty select v Entity SQL umožňují specifikaci modifikátoru ALL nebo DISTINCT. Pokud je zadán modifikátor DISTINCT, duplicity se eliminují z kolekce vytvořené výrazem dotazu (až do klauzule SELECT a včetně klauzule SELECT). Je-li zadán modifikátor ALL, není provedena žádná duplicitní eliminace; All je výchozí hodnota.
Rozdíly od Transact-SQL
Na rozdíl od jazyka Transact-SQL entity SQL nepodporuje použití argumentu * v klauzuli SELECT. Místo toho Entity SQL umožňuje dotazům projektovat celé záznamy odkazováním na aliasy kolekce z klauzule FROM, jak je znázorněno v následujícím příkladu.
SELECT * FROM T1, T2
Předchozí výraz dotazu Transact-SQL se vyjadřuje v Entity SQL následujícím způsobem.
SELECT a1, a2 FROM T1 AS a1, T2 AS a2
Příklad
Následující dotaz Entity SQL používá operátor SELECT k určení prvků, které mají být vráceny dotazem. Dotaz je založený na prodejním modelu AdventureWorks. Chcete-li tento dotaz zkompilovat a spustit, postupujte takto:
Postupujte podle pokynů v části Postupy: Provedení dotazu, který vrací výsledky typu StructuralType.
Jako argument metody
ExecuteStructuralTypeQuerypředejte následující dotaz:
SELECT VALUE product FROM AdventureWorksEntities.Products
AS product WHERE product.ListPrice < @price