ORDER BY 子句 (Transact-SQL)
更新: 2006 年 4 月 14 日
指定 SELECT 陳述式傳回的資料行所用的排序順序。除非在檢視、內嵌函數、衍生資料表和子查詢中,也指定了 TOP,否則 ORDER BY 子句無效。
附註: |
---|
在檢視、內嵌函數、衍生資料表或子查詢的定義中使用 ORDER BY 子句時,這個子句只能用來判斷 TOP 子句傳回的資料列。除非同時在查詢本身指定 ORDER BY 子句,否則 ORDER BY 子句並不保證在查詢上述建構時會傳回排序的結果。 |
語法
[ ORDER BY
{
order_by_expression
[ COLLATE collation_name ]
[ ASC | DESC ]
} [ ,...n ]
]
引數
order_by_expression
指定用來排序的資料行。排序資料行可以指定為名稱或資料行別名,或代表名稱或別名在選取清單中之位置的非負整數。當次序函數中出現 order_by_expression 時不能指定整數。排序資料行可以包含運算式,但是當資料庫設定為 SQL Server 2005 (90) 相容性模式時,該運算式便無法解析成常數。資料行名稱和別名可以用資料表或檢視名稱來限定。在 SQL Server 2005 中,限定的資料行名稱和別名會解析為 FROM 子句所列出的資料行。如果 order_by_expression 未限定,這個值在 SELECT 陳述式所列出的所有資料行之間必須是唯一的。您可以指定多個排序資料行。ORDER BY 子句中的排序資料行順序用來定義排序結果集的組織。
ORDER BY 子句可包括未出現在選取清單中的項目。不過,如果指定了 SELECT DISTINCT,或陳述式包含 GROUP BY 子句,或是 SELECT 陳述式包含 UNION 運算子,排序資料行就必須出現在選取清單中。
另外,當 SELECT 陳述式包括 UNION 運算子時,資料行名稱或資料行別名必須是第一份選取清單中所指定者。
附註: ORDER BY 子句不能使用 ntext、text、image 或 xml 資料行。
- COLLATE {collation_name}
指定應該根據 collation_name 中所指定的定序來執行 ORDER BY 作業,而不是根據資料表或檢視中所定義的資料行定序來執行。collation_name 可以是 Windows 定序名稱,也可以是 SQL 定序名稱。如需詳細資訊,請參閱<安裝程式中的定序設定>和<使用 SQL 定序>。COLLATE 只適用於 char、varchar、nchar 和 nvarchar 等資料類型的資料行。
- ASC
指定在指定資料行中的值應該從最低值到最高值,依照遞增順序來儲存。
- DESC
指定在指定資料行中的值應該從最高值到最低值,依照遞減順序來儲存。
備註
Null 值會當作最低的可能值來處理。
ORDER BY 子句中的項目數沒有限制。不過,排序作業所需要的中繼工作資料表,資料列大小限制為 8,060 位元組。這會限制 ORDER BY 子句所指定之資料行的總大小。
當搭配 SELECT...INTO 陳述式一起使用,以插入其他來源的資料列時,ORDER BY 子句無法保證資料列會依照指定順序插入。
請參閱
參考
運算式 (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|