您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

2.5. 行排序

在一个查询生成一个输出表之后(在处理完选择列表之后), 你还可以对它进行排序.如果没有选择排序,那么行将以随机 的顺序返回.这时候的实际顺序将取决于扫描和连接规划类型和 在磁盘上的顺序,但是肯定不能依赖这些东西.一定的顺序只能在 明确地使用了排序步骤之后才能保证.

ORDER BY 子句声明了排序顺序

SELECT 

select_list


    FROM 

table_expression


    ORDER BY 

column1

 [
ASC | DESC
] [
, 

column2

 [
ASC | DESC
] ...
]

column1 ,等指向选择列表: 它可以是一个列的名字(可以是明确的列标签也可以是缺省名字, 象 Section 2.3.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 的扩展,PostgreSQL 还允许对任意表达式进行排序:

SELECT a, b FROM table1 ORDER BY a + b;

还允许引用在选择列表中重命名的 FROM 子句中的列名字:

SELECT a AS b FROM table1 ORDER BY a;

但是这个特性在涉及 UNION,INTERSECT,或 EXCEPT 的查询中 是不能用的,而且也不可移植到其它 DBMS

声明的每个列都可以跟着一个可选的 ASC DESC 以设置排序方向. 缺省是 ASC .升序先输出小的数值,这里的 "小" 是以 < 操作符的角度定义的.类似的是, 降序是以 > 操作符来判断的.

如果声明了多于一个排序列,那么在前面的排序声明相等的情况下 使用后面的记录的进一步排序.