从 2025 年 11 月 1 日起,Amazon Redshift 将不再支持创建新的 Python UDF。如果您想要使用 Python UDF,请在该日期之前创建 UDF。现有的 Python UDF 将继续正常运行。有关更多信息,请参阅博客文章
ORDER BY 子句
ORDER BY 子句对查询的结果集进行排序。
语法
[ ORDER BY expression [ ASC | DESC ] ] [ NULLS FIRST | NULLS LAST ] [ LIMIT { count | ALL } ] [ OFFSET start ]
参数
- expression
- 
                     
                     一个表达式,通常情况下通过指定选择列表中的一个或多个列,来定义查询结果集的排序顺序。根据二进制 UTF-8 排序方式返回结果。您也可以指定: - 
                           未在选择列表中的列 
- 
                           由查询引用的表中存在的一个或多个列构成的表达式 
- 
                           表示选择列表条目的位置(如果不存在选择列表,则为表中列的位置)的序号 
- 
                           定义选择列表条目的别名 
 当 ORDER BY 子句包含多个表达式时,将根据第一个表达式对结果集进行排序,然后将第二个表达式应用于具有第一个表达式中的匹配值的行,以此类推。 
- 
                           
- ASC | DESC
- 
                     一个定义表达式的排序顺序的选项,如下所示: - 
                           ASC:升序(例如,按数值的从低到高的顺序和字符串的从 A 到 Z 的顺序)。如果未指定选项,则默认情况下将按升序对数据进行排序。 
- 
                           DESC:降序(按数值的从高到低的顺序和字符串的从 Z 到 A 的顺序)。 
 
- 
                           
- NULLS FIRST | NULLS LAST
- 
                     一个选项,指定是应将 NULL 值排在最前(位于非 null 值之前)还是排在最后(位于非 null 值之后)。默认情况下,按 ASC 顺序最后对 NULL 值进行排序和排名,按 DESC 顺序首先对 NULL 值进行排序和排名。 
- LIMIT number | ALL
- 
                     一个选项,用于控制查询返回的排序行的数目。LIMIT 数字必须为正整数;最大值为 2147483647。LIMIT 0 不返回任何行。可以使用此语法进行测试:检查查询运行(不显示任何行)或返回表中列的列表。如果使用 LIMIT 0 返回列的列表,则 ORDER BY 子句是多余的。默认值为 LIMIT ALL。 
- OFFSET start
- 
                     一个选项,指定在开始返回行之前跳过 start 前的行数。OFFSET 数字必须为正整数;最大值为 2147483647。在与 LIMIT 选项结合使用时,将先跳过 OFFSET 行,然后再开始计算返回的 LIMIT 行数。如果不使用 LIMIT 选项,则结果集中的行数会减少跳过的行数。仍必须扫描 OFFSET 子句跳过的行,因此使用较大的 OFFSET 值可能会非常低效。
使用说明
请注意,使用 ORDER BY 子句时预期会发生以下行为:
- 
                  NULL 值被视为“高于”所有其他值。对于默认的升序排序顺序,NULL 值将排在最后。要更改此行为,请使用 NULLS FIRST 选项。 
- 
                  当查询不包含 ORDER BY 子句时,系统将返回具有不可预测的行顺序的结果集。同一查询执行两次可能会返回具有不同顺序的结果集。 
- 
                  可在不使用 ORDER BY 子句的情况下使用 LIMIT 和 OFFSET 选项;不过,要返回一致的行集,请将这两个选项与 ORDER BY 子句结合使用。 
- 
                  在任何并行系统(例如 Amazon Redshift)中,当 ORDER BY 不生成唯一排序时,行的顺序是不确定的。也就是说,如果 ORDER BY 表达式生成重复值,则这些行的返回顺序可能会因系统或 Amazon Redshift 运行而异。 
- 
                  Amazon Redshift 不支持 ORDER BY 子句中的字符串文本。