ORDER BY 子句
适用于: Databricks SQL Databricks Runtime
返回按用户指定顺序排序的结果行。 与 SORT BY 子句不同,此子句可保证输出的总序。
语法
ORDER BY { { ALL [ sort_direction] [ nulls_sort_oder ] } |
{ expression [ sort_direction ] [ nulls_sort_oder ] } [, ...] }
sort_direction
[ ASC | DESC ]
nulls_sort_order
[ NULLS FIRST | NULLS LAST ]
参数
ALL
适用于: Databricks SQL Databricks Runtime 12.2 LTS 及更高版本
一个相当于按出现顺序在
SELECT
列表中指定所有表达式的速记。 如果指定了sort_direction
或nulls_sort_order
,它们将应用于每个表达式。-
任意类型的表达式,用于建立结果返回时所采用的顺序。
如果该表达式为文本 INT 值,则会将其解释为选择列表中的某个列位置。
sort_direction
指定 order by 表达式的排序顺序。
ASC
:此表达式的排序方向为升序。DESC
:此表达式的排序顺序为降序。
如果未显式指定排序方向,则默认按升序对行排序。
nulls_sort_order
可选择指定是在非 NULL 值之前还是之后返回 NULL 值。 如果未指定
null_sort_order
,则在排序顺序为ASC
时,Null 排在前面;排序顺序为DESC
时,Null 排在后面。NULLS FIRST
:首先返回 NULL 值,不考虑排序顺序。NULLS LAST
:最后返回 NULL 值,不考虑排序顺序。
在指定多个表达式时,从左向右进行排序。 所有行都按第一个表达式排序。 如果第一个表达式有重复的值,则使用第二个表达式来解析重复项组中的顺序,依此类推。 如果所有 order by 表达式中都有重复值,则生成的顺序不确定。
示例
> CREATE TABLE person (id INT, name STRING, age INT);
> INSERT INTO person VALUES
(100, 'John' , 30),
(200, 'Mary' , NULL),
(300, 'Mike' , 80),
(400, 'Jerry', NULL),
(500, 'Dan' , 50);
-- Sort rows by age. By default rows are sorted in ascending manner with NULL FIRST.
> SELECT name, age FROM person ORDER BY age;
Jerry NULL
Mary NULL
John 30
Dan 50
Mike 80
-- Sort rows in ascending manner keeping null values to be last.
> SELECT name, age FROM person ORDER BY age NULLS LAST;
John 30
Dan 50
Mike 80
Mary NULL
Jerry NULL
-- Sort rows by age in descending manner, which defaults to NULL LAST.
> SELECT name, age FROM person ORDER BY age DESC;
Mike 80
Dan 50
John 30
Jerry NULL
Mary NULL
-- Sort rows in ascending manner keeping null values to be first.
> SELECT name, age FROM person ORDER BY age DESC NULLS FIRST;
Jerry NULL
Mary NULL
Mike 80
Dan 50
John 30
-- Sort rows based on more than one column with each column having different
-- sort direction.
> SELECT * FROM person ORDER BY name ASC, age DESC;
500 Dan 50
400 Jerry NULL
100 John 30
200 Mary NULL
300 Mike 80
-- Sort rows based on all columns in the select list
> SELECT * FROM person ORDER BY ALL ASC;
100 John 30
200 Mary NULL
300 Mike 80
400 Jerry NULL
500 Dan 50