指定查詢所傳回的專案。
語法
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
論點
ALL 指定重複專案可以出現在結果集中。 ALL 是預設值。
DISTINCT 指定只有唯一的結果才會出現在結果集中。
VALUE 只允許指定一個專案,而且不會加入數據列包裝函式。
topSubclause 任何有效的表達式,表示要從查詢傳回的第一個結果數目,格式 top(expr)為 。
ORDER BY 運算子的 LIMIT 參數也可讓您選取結果集中的前 n 個專案。
aliasedExpr 表單的表示式:
expr 如 identifier | expr
expr 常值或表達式。
備註
SELECT 子句會在評估 FROM、 GROUP BY 和 HAVING 子句之後進行評估。 SELECT 子句只能參考目前在範圍內的專案(從 FROM 子句,或從外部範圍)。 如果指定了 GROUP BY 子句,則 SELECT 子句只允許參考 GROUP BY 索引鍵的別名。 只有在聚合函數中才允許參考FROM子句專案。
SELECT 關鍵詞之後的一或多個查詢表達式清單稱為選取清單,或更正式地做為投影。 投影的最一般形式是單一查詢表達式。 如果您從集合collection1中選取成員member1,則會產生 中每個 物件collection1之所有member1值的新集合,如下列範例所示。
SELECT collection1.member1 FROM collection1
例如,如果 customers 是型 Customer 別的集合,其屬性 Name 的類型為 string,則選取 Namecustomers 會產生字元串集合,如下列範例所示。
SELECT customers.Name FROM customers AS c
也可以使用 JOIN 語法(FULL、INNER、LEFT、OUTER、ON 和 RIGHT)。 內部聯結需要 ON,而且是允許交叉聯結的 n。
數據列和值 Select 子句
Entity SQL 支援 SELECT 子句的兩個變體。 第一個變數數據列選取是由 SELECT 關鍵詞識別,而且可以用來指定一或多個應該投影的值。因為數據列包裝函式會在傳回的值周圍隱含加入,所以查詢表達式的結果一律是多集數據列。
數據列選取中的每個查詢表達式都必須指定別名。 如果未指定別名,Entity SQL 會嘗試使用別名產生規則來產生別名。
SELECT 子句的另一個變體,value select,是由 SELECT VALUE 關鍵詞所識別。 它只允許指定一個值,而且不會加入數據列包裝函式。
數據列選取在 VALUE SELECT 方面一律可表達,如下列範例所示。
SELECT 1 AS a, "abc" AS b FROM C
SELECT VALUE ROW(1 AS a, "abc" AS b) FROM C
All 和 Distinct 修飾詞
Entity SQL 中 SELECT 的這兩個變體都允許指定 ALL 或 DISTINCT 修飾詞。 如果指定 DISTINCT 修飾詞,則會從查詢表示式所產生的集合中排除重複專案(最多包含 SELECT 子句)。 如果指定 ALL 修飾詞,則不會執行重複刪除;ALL 是預設值。
與 Transact-SQL 的差異
不同於 Transact-SQL,Entity SQL 不支援在 SELECT 子句中使用 * 自變數。 相反地,Entity SQL 允許查詢從FROM子句參考集合別名來投射整個記錄,如下列範例所示。
SELECT * FROM T1, T2
上述 Transact-SQL 查詢表示式會以下列方式以 Entity SQL 表示。
SELECT a1, a2 FROM T1 AS a1, T2 AS a2
範例
下列 Entity SQL 查詢會使用 SELECT 運算符來指定要由查詢傳回的專案。 查詢是以 AdventureWorks 銷售模型為基礎。 若要編譯並執行此查詢,請遵循下列步驟:
遵循 如何:執行會傳回 StructuralType 結果的查詢中的程式。
將下列查詢當做自變數傳遞至
ExecuteStructuralTypeQuery方法:
SELECT VALUE product FROM AdventureWorksEntities.Products
AS product WHERE product.ListPrice < @price