# ORDER BY 節

ORDER BY節はSELECT文の省略可能な要素です。 ORDER BY節にてResultSetにある行の順番を指定できます。

#### Syntax

    ORDER BY { 列名 | ColumnPosition | Expression }
        [ ASC | DESC ]
        [ , 列名 | 列位置 | 式
            [ ASC | DESC ] ] *

列名
  問い合わせのSELECT 文の選択項目にて、可視である名前を参照します。 ORDER BYで指定する列名はSELECTされる項目になくとも構いません。
列位置
  SELECT 文の選択項目の、列の番号を指定する整数です。 列位置は、0より大きくかつ結果表の列数以下でなければなりません。言い換えれば、列で並び変えるために、その列がSELECTされる項目にある必要があります。
式
  並び変えを行うキーの式で、数値や文字列、日付などの式とすることができます。 式はスカラー副問い合わせやCASE式などの、行の値における式とすることができます。
ASC
  結果を昇順で返すことを指定します。方向が指定されない場合、ASCが既定です。
DESC
  結果を降順で返すことを指定します。

#### 但し書き

- SELECT DISTINCTが指定されたり、SELECT文にGROUP BY節があった場合、ORDER BYする列はSELECTされる項目になければなりません。
- ORDER BY節があると、SELECT文を更新可能カーソルとすることができません。より詳細な情報は、更新可能なカーソルおよびResultSetの要件を参照してください。 例えば、もしINTEGERの列に整数があると、ソートのときNULLは1より大きいと見なされます。言い換えれば、NULLの値は、より上の位置にソートされます。

#### 相関名を使う例

相関名が選択項目にて指定されていれば、結果セットを相関名で並び変えできます。 たとえばCITIESデータベースから、COUNTRY列にNATIONという相関名を与えて、CITY_NAME列とCOUNTRY列に格納されているすべての情報を返す場合、次のようなSELECT文を書きます。

    SELECT CITY_NAME, COUNTRY AS NATION
        FROM CITIES
        ORDER BY NATION

#### 数式を使う例

結果セットを数式で並び変えることができます。例を挙げます。

    SELECT name, salary, bonus FROM employee
       ORDER BY salary+bonus

この例では、salaryとbonus列はDECIMALデータ型です。

#### 関数を使う例

結果セットを関数の呼び出し結果を元に並び変えることができます。例を挙げます。

    SELECT i, len FROM measures
       ORDER BY sin(i)

親トピック: SQL 節