更新时间: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;

相关文档