ORDER BY (Entity SQL)

指定 SELECT 陳述式所傳回物件使用的排序順序。

[ ORDER BY 
   {
            order_by_expression [SKIP n] [LIMIT n]
      [ COLLATE collation_name ]
      [ ASC | DESC ]
   }
   [ ,…n ] 
]

引數

  • order_by_expression
    任何指定要排序之屬性的有效查詢運算式。可以指定多個排序運算式。ORDER BY 子句中排序運算式的順序會定義排序結果集的組織方式。
  • COLLATE {collation_name}
    指定 ORDER BY 運算要依照 collation_name 中指定的定序執行。COLLATE 只適用於字串運算式。
  • ASC
    指定特定屬性中的值要以遞增順序 (從最低值到最高值) 排序。這是預設值。
  • DESC
    指定特定屬性中的值要以遞減順序 (從最高值到最低值) 排序。
  • LIMIT n
    只選取前 n 個項目。
  • SKIP n
    略過前 n 個項目。

備註

ORDER BY 子句會以邏輯方式套用到 SELECT 子句的結果。ORDER BY 子句可以利用項目的別名參考選取清單中的項目。ORDER BY 子句也可以參考目前在範圍內的其他變數。但是,如果已經配合 DISTINCT 修飾詞指定了 SELECT 子句,那麼 ORDER BY 子句就只能參考來自 SELECT 子句的別名。

SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2

ORDER BY 子句中的每個運算式都必評估為可以比較排序是否不相等 (小於或大於等) 的型別。這些型別通常是純量基本型別,例如數值、字串和日期。屬於可比較型別的 RowTypes 也可以比較排序。

如果程式碼要在最上層投影以外的排序集上重複執行,輸出不一定會保持原排序。

    -- In the following sample, order is guaranteed to be preserved:
    SELECT C1.FirstName, C1.LastName
            FROM AdventureWorks.Contact as C1
            ORDER BY C1.LastName
    -- In the following query ordering of the nested query is ignored.
    SELECT C2.FirstName, C2.LastName
        FROM (SELECT C1.FirstName, C1.LastName
            FROM AdventureWorks.Contact as C1
            ORDER BY C1.LastName) as C2

如需排序的 UNION、UNION ALL、EXCEPT 或 INTERSECT 運算,請使用下列模式:

SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...

限制關鍵字

使用於 ORDER BY 子句時,下列關鍵字必須括在引號內:

  • CROSS

  • FULL

  • KEY

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • VALUE

排序巢狀查詢

在 Entity Framework 中,巢狀運算式可放在查詢中的任何地方;巢狀查詢的順序並不會保留。

    -- The following query will order the results by the last name.
    SELECT C1.FirstName, C1.LastName
            FROM AdventureWorks.Contact as C1
            ORDER BY C1.LastName
    -- In the following query, ordering of the nested query is ignored.
    SELECT C2.FirstName, C2.LastName
        FROM (SELECT C1.FirstName, C1.LastName
            FROM AdventureWorks.Contact as C1
            ORDER BY C1.LastName) as C2

範例

以下 Entity SQL 查詢使用 ORDER BY 運算子指定 SELECT 陳述式所傳回物件使用的排序順序。此查詢是以 AdventureWorks Sales Model 為依據。若要編譯及執行此查詢,請遵循以下步驟:

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

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

SELECT VALUE p FROM AdventureWorksEntities.Product 
    AS p order by p.ListPrice

輸出如下所示:

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
...

另請參閱

參考

SKIP (Entity SQL)
LIMIT (Entity SQL)
TOP (Entity SQL)

概念

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