SELECT (Entity SQL)

指定查詢要傳回的項目。

SELECT [ ALL | DISTINCT ] [ topSubclause ] aliasedExpr 
      [{ , aliasedExpr }]
or
SELECT VALUE [ ALL | DISTINCT ] [ topSubclause ] expr

引數

  • ALL
    指定結果集可以出現重複的項目。預設值為 ALL。
  • DISTINCT
    指定結果集只能出現唯一的結果。
  • VALUE
    只允許指定一個項目,而且不加入資料列包裝函式。
  • topSubclause
    表示查詢所傳回第一組結果的數目,格式為 top (expr)

    ORDER BY (Entity SQL) 運算子的 LIMIT 參數也可以讓您選取結果集中前 n 個項目。

  • aliasedExpr
    以下格式的運算式:

    expr 做為 identifier | expr

  • expr
    常值或運算式。

備註

SELECT 子句是在 FROM (Entity SQL)GROUP BY (Entity SQL)HAVING (Entity SQL) 子句都評估完之後才進行評估。SELECT 子句只可參考目前範圍內 (來自 FROM 子句,或來自外部範圍) 的項目。如果指定了 GROUP BY 子句,SELECT 子句只可參考 GROUP BY 索引鍵的別名。只允許在彙總函式中參考 FROM 子句項目。

位於 SELECT 關鍵字之後的一或多個查詢運算式就是所謂的選取清單,較正式的名稱則是投影。投影最常見的形式是單一查詢運算式。如果從集合 collection1 選取成員member1,將會針對 collection1 中的每一個物件產生所有member1值的新集合,如以下範例所示。

SELECT collection1.member1 FROM collection1

例如,假設customersCustomer 型別的集合,而後者具有 string 型別的屬性Name,那麼從customers選取Name將會產生字串的集合,如以下範例所示。

SELECT customers.Name FROM customers AS c

您也可以使用 JOIN 語法 (FULL、INNER、LEFT、OUTER、ON 和 RIGHT)。ON 是內部聯結的必要項,但不可使用於交叉聯結。

資料列選取和值選取子句

Entity SQL 支援兩種 SELECT 子句的變異形式。第一種變異形式是由 SELECT 關鍵字識別的資料列選取,用來指定應該投影來的一或多個值。由於傳回的值會以隱含方式加上資料列包裝函式,所以查詢運算式的結果一定是資料列的多重集。

資料列選取中的每一個查詢運算式必須指定一個別名。如果未指定別名,Entity SQL 會嘗試依據別名產生規則產生別名。

SELECT 子句的另一種變異形式是由 SELECT VALUE 關鍵字識別的值選取。它只允許指定一個值,而且不加入資料列包裝函式。

資料列選取永遠可以用 VALUE SELECT 的方式表示,如以下範例所示。

SELECT 1 AS a, "abc" AS b, a+34 AS c
SELECT VALUE ROW(1 AS a, "abc" AS b, a+34 AS c) 

All 和 Distinct 修飾詞

Entity SQL 中這兩種 SELECT 的變異形式都可以指定 ALL 或 DISTINCT 修飾詞。如果指定了 DISTINCT 修飾詞,便會從查詢運算式 (到 SELECT 子句為止) 產生的集合中排除重複項目。如果指定了 ALL 修飾詞,就不會執行排除重複項目;ALL 是預設值。

與 Transact-SQL 的差異

Entity SQL 與 Transact-SQL 的差異在於它不支援在 SELECT 子句中使用 * 引數。Entity SQL 會從 FROM 子句參考集合別名,用此方式讓查詢投影出整個記錄,如以下範例所示。

SELECT * FROM T1, T2

現在就按照下列方式以 Entity SQL 表示前面的 Transact-SQL 查詢運算式。

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

範例

以下 Entity SQL 查詢使用 SELECT 運算子指定查詢要傳回的項目。此查詢是以 AdventureWorks Sales Model 為依據。若要編譯及執行此查詢,請遵循以下步驟:

  1. 按照 HOW TO:執行可傳回 StructuralType 結果的查詢 (EntityClient) 中的程序進行。

  2. 將下列查詢當成引數傳遞至 ExecuteStructuralTypeQuery 方法:

SELECT VALUE product FROM AdventureWorksEntities.Product AS product

輸出如下所示:

ProductID: 1
Name: Adjustable Race
ProductNumber: AR-5381
MakeFlag: False
ProductID: 2
Name: Bearing Ball
ProductNumber: BA-8327
MakeFlag: False
ProductID: 3
Name: BB Ball Bearing
ProductNumber: BE-2349
MakeFlag: True
ProductID: 4
Name: Headset Ball Bearings
ProductNumber: BE-2908
MakeFlag: False
ProductID: 316
Name: Blade
ProductNumber: BL-2036
MakeFlag: True
...

另請參閱

參考

TOP (Entity SQL)

概念

查詢運算式 (Entity SQL)
Entity SQL 參考