ORDER BY

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

ORDER BY 子句用于对查询的完整结果集进行全局排序,其支持 ASC(升序)、DESC(降序)以及 NULLS FIRST / NULLS LAST 排序。

语法

ORDER BY { expression [ sort_direction | nulls_sort_order ] [ , ... ] }

参数

子句/关键字
说明
ORDER BY
指定以逗号分隔的表达式列表,可附加 sort_directionnulls_sort_order 参数来控制行排序。
expression
需要排序的列名。
sort_direction
可选指定行的升序或降序排序。有效值为 ASC(升序)和 DESC(降序)。若未显式指定,默认按升序排列。 语法:[ ASC | DESC ]
nulls_sort_order
可选指定 NULL 值在非 NULL 值之前/之后返回。若未指定:
升序排序时 NULL 默认排在最前。
降序排序时 NULL 默认排在最后。
若指定:
NULLS FIRST 时,无论排序方向如何,NULL 值总在最前。
NULLS LAST 时,无论排序方向如何,NULL 值总在最后。
语法:[ NULLS { FIRST | LAST } ]

示例

-- ORDER BY ASC
SELECT * FROM VALUES (3,'c'),(1,'a'),(2,'b') AS t(id,name) ORDER BY id ASC

-- ORDER BY DESC
SELECT * FROM VALUES (3,'c'),(1,'a'),(2,'b') AS t(id,name) ORDER BY id DESC

-- ORDER BY NULLS FIRST
SELECT * FROM VALUES (3,NULL),(1,'a'),(2,NULL) AS t(id,name) ORDER BY name ASC NULLS FIRST

-- ORDER BY NULLS LAST
SELECT * FROM VALUES (3,NULL),(1,'a'),(2,NULL) AS t(id,name) ORDER BY name ASC NULLS LAST