2.4. 行の並び換え

一つの問い合わせが一つの出力テーブルを生成した後(select リストの 処理が完了した後)、任意で並び換えることができます。並び換えが 選ばれなかった場合、行はランダムな順序で返されます。そのような場合、 実際の順序は、スキャンや結合プランの種類や、ディスク上に格納されている 順序に依存します。しかし、当てにはなりません。特定の順序で出力する ことは、明白に並び換える処理を選択することでのみ保証されます。

ORDER BY 句は並び換えるする順番を指定します。

SELECT select_list FROM table_expression ORDER BY column1 [ASC | DESC] [, column2 [ASC | DESC] ...]
column1やその他は、選択リストの列を 参照します。これらは列の出力名(Section 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の問い合わせの実行中 は機能しません。また、他のDBMSへの可搬性もありません。

それぞれの列の並び順は、ソートの方向を決める ASCかDESCのどちらかに 従います。ASCがデフォルトです。昇順はより小さな値をはじめに置きます。 "より小さい"<演算子で定義され ます。 同じように、降順は>演算子で指定されます。

一つ以上の列を並び換えるよう指定すると、後に指定されたものは、前に 指定した並び換えで並び換えられたものに対して適用されます。