1つの問い合わせが1つの出力テーブルを生成した後(selectリストの処理が完了した後)、任意で並べ替えることができます。並べ替えが選ばれなかった場合、行はランダムな順序で返されます。そのような場合、実際の順序は、スキャンや結合計画の種類や、ディスク上に格納されている順序に依存します。 しかし、当てにはなりません。特定の順序で出力することは、明白に並べ替える処理を選択することでのみ保証されます。
ORDER BY 句は並べ替えの順番を指定します。
SELECT select_list FROM table_expression ORDER BY column1 [ASC | DESC] [, column2 [ASC | DESC] ...]
column1やその他は、選択リストの列を参照します。これらは列の出力名(Section 4.3.2を参照)か、列の番号になります。以下にいくつか例を示します。
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 を含む問い合わせでは機能しません。 また、他の SQL データベースへの移植性もありません。
それぞれの列の並び順は、昇順か降順かで並び換えの方向を決めるASC か DESC のどちらかに従うこともできます。 デフォルトは昇順の ASC です。昇順はより小さな値を始めに置きます。" より小さい"は、<演算子で定義されます。同じように、降順は>演算子で指定されます。
並べ替えのために複数の列を指定すると、先に指定した列での並べ換えで等しかった行に対して、後に指定した列での並べ替えが適用されます。