このトピックでは、ORDER BY句とこの句の使用方法について説明します。
オプションのORDERBY句の構文は次のとおりです。
ORDER BY式 [ASC | DESC ] [, ...]expressionには、SELECTリストの出力列の名前または序数を指定できます。 また、入力列の値から形成される任意の式にすることもできます。
ORDER BY句を使用すると、指定した式に基づいて結果行をソートできます。 2つの行が左端の式に基づいて等しい場合、それらは次の式に基づいて比較されます。 指定されたすべての式に基づいて等しい場合、実装に依存する順序で返されます。
序数は、結果列の序数 (左から右) の位置を指します。 この機能は、一意の名前を持たない列を使用してソートを定義します。 AS句を使用して結果列に名前を割り当てることができるため、これは必要ありません。
ORDERBY句で、SELECT結果リストに表示されない列を含む式を使用することもできます。 したがって、次の文は有効です。
SELECT enameからemp注文によってempno;UNION、INTERSECT、またはMINUS句の結果に適用されるORDER BY句は、式ではなく出力列名または数のみを指定できます。 これがその特徴の限界である。
ORDER BY式が出力列名と入力列名の両方に一致する単純な名前である場合、ORDER BYはその単純な名前を出力列名として解釈します。 これは、同じ状況でGROUP by句によって行われる選択の反対です。 この不整合は、SQL 標準と互換性を確保するためのものです。
ORDER BY句の式の後にASC (昇順) またはDESC (降順) キーワードを追加できます。 ASCまたはDESCを指定しない場合、デフォルトでASCが使用されます。
null 値は、他の値よりも高い順に並べ替えられます。 つまり、null 値は昇順の最後にあり、降順の最初にあります。
文字列データは、特定のロケールの照合順序を使用してソートされます。 照合順序は、データベースクラスターの初期化時に作成されます。
例
次の2つの例は、2番目の列 (dname) の内容を使用して結果をソートする方法を示しています。
SELECT * からdept ORDER BY dname;
deptno | dname | loc
------- ------------ ------------------
10 | ACCOUNTING | NEW YORK
40 | OPERATIONS | BOSTON
20 | RESEARCH | DALLAS
30 | 贩売 | シカゴ
(4行)
SELECT * からdept注文BY 2;
deptno | dname | loc
------- ------------ ------------------
10 | ACCOUNTING | NEW YORK
40 | OPERATIONS | BOSTON
20 | RESEARCH | DALLAS
30 | 贩売 | シカゴ
(4行)