行のソート

PostgreSQL 8.0.0 文書
前のページ | 巻戻し | 第 7章問い合わせ | 早送り | 次のページ

# 7.5. 行のソート

ある問い合わせが1つの出力テーブルを生成した後（選択リストの処理が完了した後）、並べ替えることができます。 並べ替えが選ばれなかった場合、行は無規則な順序で返されます。 そのような場合、実際の順序は、スキャンや結合計画の種類や、ディスク上に格納されている順序に依存します。 しかし、当てにはなりません。 特定の順序で出力することは、明白に並べ替える処理を選択することでのみ保証されます。

`ORDER BY`句は並べ替えの順番を指定します。

    SELECT select_list
        FROM table_expression
        ORDER BY column1 [ASC | DESC] [, column2 [ASC | DESC] ...]

`column1`やその他は、選択リストの列を参照します。 これらは列の出力名（項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;

選択リストに存在しない、`FROM`句の列名を参照することもできます。

    SELECT a FROM table1 ORDER BY b;

しかしこれらの拡張は`UNION`、`INTERSECT`、または `EXCEPT`を含む問い合わせでは機能しません。 また、他のSQLデータベースへの移植性もありません。

列指定の後に省略可能な`ASC`もしくは`DESC`を付与することで、並び替えの方向を昇順、降順にするかを設定することができます。 `ASC`順がデフォルトです。 昇順では、小さな値を先に出力します。 ここでの"小さい"とは、`<`演算子によって決定されます。 同様に降順では`>`演算子で決定されます。 [1]

並べ替えのために複数の列を指定すると、先に指定した列での並べ換えで等しかった行に対して、後に指定した列での並べ替えが適用されます。

### 注意

[1] | 実際、PostgreSQLは、`ASC`と`DESC`のソート順を決定するために、列データ型用のデフォルトのB-tree演算子クラスを使用します。 慣習的に、データ型は`<`と`>`演算子をこのソート順になるように設定されます。 しかし、ユーザ定義データ型の設計者は異なるものを選択することができます。

前のページ | ホーム | 次のページ
問い合わせの結合 | 上に戻る | `LIMIT`と`OFFSET`