クエリが出力テーブルを生成した後(選択リストが処理された後)、オプションで並べ替えることができます。 ソートが選択されていない場合、行は指定されていない順序で返されます。 この場合の実際の順序は、スキャンプランと結合プランの種類、およびディスク上の順序によって異なりますが、それに依存してはいけません。 特定の出力順序は、ソートステップが明示的に選択されている場合にのみ保証されます。
ORDER BY句は、並べ替え順序を指定します:
SELECT select_list FROM table_expression ORDER BY column1 ...]
コラム1等、リスト列の選択を参照してください。 これらは、列の出力名(セクション7.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;
selectリストに存在しないFROM句の列名への参照も許可されます:
SELECT a FROM table1 ORDER BY b;
ただし、これらの拡張機能は、UNION、INTERSECT、またはEXCEPTを含むクエリでは機能せず、他のSQLデータベースに移植することはできません。
各列指定の後にオプションのASCまたはDESCを付けて、ソート方向を昇順または降順に設定することができます。 ASC順序がデフォルトです。 昇順では、より小さい値が最初に配置されます。”smaller”は<演算子で定義されます。 同様に、降順は>演算子で決定されます。
複数の並べ替え列が指定されている場合、以前の並べ替え列によって課された順序で等しい行を並べ替えるために、後のエントリが使用されます。