結果セットでの行のソートを指定する SELECT 節です。
Synopsis
ORDER BY ordering-item [ASC | DESC]{,ordering-item [ASC | DESC] ...}
引数
ordering-item ソートの順序を決定するリテラルスカラ式ORDER BY 節は、単一もしくは複数の順序付け項目を含むことができます。
ASC
DESC
オプション — 昇順 (ASC)、あるいは降順 (DESC) のいずれかでソートします。既定は昇順です。
概要
ORDER BY 節は、テーブルやクエリの結果セットの行をソートします。この文は、SELECT 文、または複数の SELECT 文の UNION による、単一の結果セットに対して動作します。
コンマで区切られたリストとしてソートする、複数の行を指定することができます。ソートは最初にリストされている列で実行され、次に同じ列内の 2 番目の列のへと続きます。
列は、フィールド名、フィールドまたは定数の式、あるいは列番号で指定できます。最初の文字が数字の場合、Caché は列番号を指定しているとみなします。それ以外は、フィールド名または式を指定しているとみなされます。
以下の ORDER BY 節は、フィールド名でソートしています。
ORDER BY Home_State,LName,FName
以下の ORDER BY 節は、列番号 (SELECT 文で指定されているように、検索された列の数値順) でソートしています。
ORDER BY 3,1,2
Caché 参照 (->) 構文は、例えば以下のようにフィールド名を指定するために使用できます。
ORDER BY Car->color 
列番号は、SELECT 節リスト内の位置を参照します。列番号は、テーブル自体の列の位置を参照しません
整数や、またはいかなる番号でも、列番号を指定できます。標準的なトランケーション・ルールは、整数の解決に適用されます。例えば 1.99 は切捨てにより 1 となります。
ソートは照合シーケンス順序で実行されます。ソートは、作成時に列に指定された照合に基づいて実行されます。文字列の列の既定は %SQLUPPER です。式に対しては、既定照合は %EXACT です。ORDER BY 節の %SQLSTRING(fieldxyz) などの式を使用して、既定をオーバーライドできます。
既定の昇順照合シーケンスは、空文字列 ('') よりも NULL を最小値とします。ORDER BY は、空白スペースのみで構成される文字列と空文字列を区別しません。
列識別子の前の、オプションの ASC (昇順) や DESC (降順) キーワードで指定されたように、各列のソートは昇順または降順の照合順で指定できます。ASC や DESC が指定されていない場合、ORDER BY は列を昇順でソートします。以下はその例です。
SELECT A,B,C,M,E,X,J
FROM LetterTable
ORDER BY 3,7 DESC,1 ASC
SELECT 節リスト内の 3 番目にリストされた項目 (C) のデータ値を昇順でソートします。この中では、7 番目にリストされた項目 (J) の値を降順でソートします。この中では、1 番目にリストされた項目 (A) の値を昇順でソートします。
SELECT クエリが ORDER BY 節を指定する場合、結果のデータは更新できません。したがって、後に続く DECLARE CURSOR FOR UPDATE 文を指定する場合、FOR UPDATE 節は無視され、カーソルは読み取り専用で宣言されます。
ORDER BYUNION に適用される場合、順序付け項目は数字か単純な列名にします。式は使用できません。列名を使用する場合、列の名前付けが UNION の最初の SELECT リストで行われたものとして結果の列を参照します。
以下の 2 つの例は、1 つの ORDER BY 節内で列のソートに異なる方法を指定しています。以下の 2 つのクエリは同等です。1 番目はソート項目として列名を使用し、2 番目は列番号 (選択したフィールドのシーケンス番号) を使用しています。
SELECT Name,Age,Home_State
FROM Sample.Person
ORDER BY Home_State,Age DESC
SELECT Name,Age,Home_State
FROM Sample.Person
ORDER BY 3,2 DESC
関連項目
クエリ SELECT UNION