指定在 SELECT 語句中傳回之物件上使用的排序順序。
語法
[ ORDER BY
{
order_by_expression [SKIP n] [LIMIT n]
[ COLLATE collation_name ]
[ ASC | DESC ]
}
[ ,…n ]
]
論點
order_by_expression 指定要排序之屬性的任何有效查詢表達式。 您可以指定多個排序表示式。 ORDER BY 子句中排序表達式的順序會定義排序結果集的組織。
COLLATE {collation_name} 指定應該根據 中指定的 collation_name定序執行 ORDER BY 作業。 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 子句中的每個運算式都必須評估為某種類型,這些類型可以比較排序的不等比較(小於或大於等等)。 這些類型通常是純量基本類型,例如數位、字串和日期。 可比較類型的 RowType 也是可比較的順序。
如果您的程式代碼逐一查看已排序的集合,而不是最上層投影,則輸出不保證會保留其順序。
在下列範例中,保證會保留順序:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
在下列查詢中,會忽略巢狀查詢的順序:
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 :
十字
滿
鑰匙
左邊
訂單
外部
正確
ROW
價值
排序巢狀查詢
在 Entity Framework 中,巢狀表達式可以放在查詢中的任何位置;不會保留巢狀查詢的順序。
下列查詢會依姓氏排序結果:
SELECT C1.FirstName, C1.LastName
FROM AdventureWorks.Contact as C1
ORDER BY C1.LastName
在下列查詢中,會忽略巢狀查詢的順序:
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 銷售模型為基礎。 若要編譯並執行此查詢,請遵循下列步驟:
遵循 如何:執行會傳回 StructuralType 結果的查詢中的程式。
將下列查詢當做自變數傳遞至
ExecuteStructuralTypeQuery方法:
SELECT VALUE p FROM AdventureWorksEntities.Products
AS p ORDER BY p.ListPrice