order by用于对表进行排序。 详情参见 https://www.postgresql.org/docs/current/queries-order.html

SELECT select_list
    FROM table_expression
    ORDER BY sort_expression1 [ASC | DESC] [NULLS { FIRST | LAST }]
             [, sort_expression2 [ASC | DESC] [NULLS { FIRST | LAST }] ...]

当指定了多个表达式时,后面的值用于根据前面的值对相等的行进行排序。

  • 每个表达式后面都可以跟一个可选的ASCDESC关键字,以将排序方向设置为升序或降序。
  • 可选参数NULLS FIRSTNULLS LAST用于确定空值是出现在排序顺序中的非空值之前还是之后。默认(NULLS FIRST)

其中sort_expression可以是任何有效的表达式如

SELECT a, b FROM table1 ORDER BY a + b, c;
SELECT a, b FROM table1 ORDER BY CASE WHEN a >= 0 and b THEN a ELSE -1 END, c;