pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当一个查询生成输出表之后(也就是处理完选择列表之后),还可以选择对其排序。如果没有选择排序,行将按随机顺序返回。这时的实际顺序取决于扫描和连接计划类型以及磁盘上的物理顺序,但绝不能依赖这些因素。只有显式选择排序步骤,才能保证特定的输出顺序。
ORDER BY 子句指定排序顺序:
SELECTselect_listFROMtable_expressionORDER BYcolumn1[ASC | DESC] [,column2[ASC | DESC] ...]
column1等指的是选择列表的列。它们既可以是列的输出名(见第 2.2.1 节),也可以是列的编号。一些例子:
SELECT a, b FROM table1 ORDER BY a; SELECT a + b AS sum, c FROM table1 ORDER BY sum; SELECT a, sum(b) FROM table1 GROUP BY a ORDER BY 1;
作为对 SQL 标准的扩展,Postgres 还允许按任意表达式排序:
SELECT a, b FROM table1 ORDER BY a + b;
在选择列表中被重命名的 FROM 子句列名的引用也是允许的:
SELECT a AS b FROM table1 ORDER BY a;
但这些扩展在涉及 UNION、INTERSECT 或 EXCEPT 的查询中不起作用,并且不能移植到其他 DBMSes。
每个列说明后面都可以选择性地写上 ASC 或 DESC 来指定排序方向。ASC 是默认值。升序会把较小的值排在前面,而“较小”是由<操作符定义的。类似地,降序则由>操作符定义。
如果指定了多个排序列,较后的项将用于对那些在前面排序说明所决定的顺序下相等的行继续排序。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。