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
句の中でフィールドが占める位置。
修飾子 ASC
と DESC
は省略可能です。指定しない場合、結果は昇順で並べ替えられます。
以下のクエリは、属性 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)