更新时间:2026-07-03 GMT+08:00
ORDER BY
功能描述
ORDER BY子句用于对查询结果进行全局排序。Spark 4.0增强了排序功能,支持NULLS FIRST/LAST指定NULL值排序位置,并可与OFFSET配合实现分页。
语法格式
SELECT projectItem [, ...] FROM table_reference
ORDER BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] } [, ...] 参数说明
| 参数 | 说明 |
|---|---|
| expression | 排序表达式,可以是列名、列别名或表达式。 |
| ASC | 升序排序,为默认选项。 |
| DESC | 降序排序。 |
| NULLS FIRST | 将NULL值排在排序结果的最前面。 |
| NULLS LAST | 将NULL值排在排序结果的最后面。默认情况下,升序时NULL排在最后,降序时NULL排在最前。 |
注意事项
- ORDER BY执行全局排序,所有数据会汇聚到一个Reducer中处理。
- 与GROUP BY一起使用时,ORDER BY后面可以跟聚合函数。
- ORDER BY可以引用SELECT列表中的别名。
- 可与LIMIT和OFFSET配合实现分页查询。
示例
按单列升序排序:
SELECT * FROM student ORDER BY score;
按单列降序排序:
SELECT * FROM student ORDER BY score DESC;
按多列排序:
SELECT * FROM student ORDER BY class_id ASC, score DESC;
指定NULL值排序位置:
SELECT * FROM student ORDER BY score DESC NULLS LAST;
使用列别名排序:
SELECT name, score * 1.5 AS weighted_score FROM student ORDER BY weighted_score DESC;
分页查询(与OFFSET配合,Spark 4.0):
SELECT * FROM student ORDER BY score DESC LIMIT 10 OFFSET 20;
父主题: 排序