ORDER BY 句

ORDER BY 句では、クエリから返されたデータを、指定した列リストに基づいて並べ替えます。

ORDER BY 句の構文 (SELECT ステートメント)
<order by> ::=
  ORDER BY <order by expression> [ ASC | DESC ]
  [, <order by expression> [ ASC | DESC ] ]*

<order by expression> ::=
    <field name>
  | <expression>
  | <field position:integer>

通常、Virtual DataPort では、ソースから取得したデータが非同期的に処理されます。つまり、ソースから取得されたすべてのデータが処理されるまで待機することなく、クライアントへの結果の送信を開始できます。ただし、クエリで ORDER BY 句を使用していて、その ORDER BY 句をソースにプッシュダウンできない場合は、クエリの結果が同期的に生成されます。つまり、ソースからすべてのデータが取得されるまで結果が得られません。

クエリの ORDER BY 句では以下を指定できます。

  • フィールドの名前、またはクエリによってその SELECT 句の中で投影されるフィールドの別名。

  • フィールドの名前または投影されるフィールドの別名に基づく式。

  • 結果を並べ替える SELECT 句の中でフィールドが占める位置。

修飾子 ASCDESC は省略可能です。指定しない場合、結果は昇順で並べ替えられます。

以下のクエリは、属性 pay の降順で並べ替えた従業員を取得します。

SELECT *
FROM emp
ORDER BY pay DESC;

以下のクエリでは、ORDER BY のフィールドを SELECT 句での位置で指定しています。

SELECT name, pay
FROM emp
ORDER BY 2 DESC;

最初のフィールドのインデックスは 1 です。

以下のクエリでは、 ORDER BY 句で式を使用しています。

SELECT *
FROM internet_inc
ORDER BY lower(summary)