更新时间:2026-07-03 GMT+08:00
SORT BY
功能描述
SORT BY子句用于在每个Reducer内对数据进行局部排序。与ORDER BY的全局排序不同,SORT BY只保证每个Reducer内的数据有序。
语法格式
SELECT projectItem [, ...] FROM
table_reference SORT BY { expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] } [, ...] 参数说明
| 参数 | 说明 |
|---|---|
| expression | 排序表达式,可以是列名或表达式。 |
| ASC | 升序排序,为默认选项。 |
| DESC | 降序排序。 |
| NULLS FIRST | 将NULL值排在排序结果的最前面。 |
| NULLS LAST | 将NULL值排在排序结果的最后面。 |
注意事项
- SORT BY是局部排序,仅保证每个Reducer内的数据有序,不保证全局有序。
- 如需全局排序,请使用ORDER BY。
- SORT BY通常与DISTRIBUTE BY配合使用,先分桶再桶内排序。
- SORT BY支持NULLS FIRST/LAST指定NULL值的排序位置。
示例
按score在Reducer内升序排序:
SELECT * FROM student SORT BY score;
按score在Reducer内降序排序:
SELECT * FROM student SORT BY score DESC;
与DISTRIBUTE BY配合使用:
SELECT * FROM student DISTRIBUTE BY class_id SORT BY score DESC;
多字段排序并指定NULL值位置:
SELECT * FROM student SORT BY class_id ASC NULLS LAST, score DESC NULLS LAST;
父主题: 排序