ORDER BY 句 (Transact-SQL)

更新 : 2006 年 4 月 14 日

SELECT ステートメントで返される列で使用される並べ替え順を指定します。TOP を同時に指定しない場合、ビュー、インライン関数、派生テーブル、およびサブクエリでは ORDER BY 句は無効になります。

ms188385.note(ja-jp,SQL.90).gifメモ :
ビュー、インライン関数、派生テーブル、またはサブクエリの定義で ORDER BY を使用する場合、この句は TOP 句で返される行の特定にのみ使用されます。クエリ自体にも ORDER BY を指定しない限り、これらの構造をクエリしたときに、ORDER BY 句で順序どおりの結果が得られるかどうかは保証されません。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

[ ORDER BY 
    {
    order_by_expression 
  [ COLLATE collation_name ] 
  [ ASC | DESC ] 
    } [ ,...n ] 
] 

引数

  • order_by_expression
    並べ替えのキーとなる列を指定します。並べ替え列は、列の名前、列の別名、または選択リスト内の名前や別名の位置を示す負以外の整数で指定できます。順位付け関数に order_by_expression が使用されている場合、整数値は指定できません。並べ替え列に式を含めることはできますが、データベースが SQL Server 2005 (90) 互換性モードの場合は、式を定数に解決することはできません。列の名前と別名は、テーブル名またはビュー名で修飾できます。SQL Server 2005 では、修飾された列名および別名は、FROM 句で指定される列に解決されます。order_by_expression が修飾されていない場合、値は SELECT ステートメントに一覧表示されているすべての列で一意である必要があります。

    キーとなる列は複数指定できます。ORDER BY 句内に記述するキー列の並び順によって、並べ替えられた結果セットの構成が決まります。

    ORDER BY 句には、選択リストにない項目を指定できますが、SELECT DISTINCT を指定する場合、ステートメントに GROUP BY 句を含める場合、または SELECT ステートメントに UNION 演算子を含める場合は、選択リストに並べ替え列を指定する必要があります。

    これに加えて、SELECT ステートメントで UNION 演算子を使用する場合は、列の名前または別名が、最初の選択リストに指定されている必要があります。

    ms188385.note(ja-jp,SQL.90).gifメモ :
    ORDER BY 句では、ntexttextimage、または xml 型の列は使用できません。
  • COLLATE {collation_name}
    テーブルまたはビューで定義した列の照合順序ではなく、collation_name で指定した照合順序に従って ORDER BY 操作を実行します。collation_name には、Windows 照合順序名と SQL 照合順序名のいずれかを指定できます。詳細については、「セットアップでの照合順序の設定」および「SQL 照合順序の使用」を参照してください。COLLATE は、charvarcharncharnvarchar 型の列にのみ適用できます。
  • ASC
    指定した列の値が昇順、つまり小さい値から大きい値へと並べ替えられます。
  • DESC
    指定した列の値が降順、つまり大きい値から小さい値へと並べ替えられます。

解説

NULL 値は最小値として扱われます。

ORDER BY 句の中の項目数に制限はありませんが、並べ替えの処理を行うために必要な中間の作業テーブルの行サイズには、8,060 バイトという制限があります。これを基に、ORDER BY 句に指定できる列全体のサイズが制限されます。

別のソースから行を挿入するときに、ORDER BY 句を SELECT...INTO ステートメントと共に使用する場合、行が指定した順序どおりに挿入されるかどうかは保証されません。

参照

関連項目

式 (Transact-SQL)
SELECT (Transact-SQL)
FROM (Transact-SQL)

その他の技術情報

ORDER BY の使用による行の並べ替え

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

新しい内容 :
  • インライン関数、派生テーブル、またはサブクエリの定義における ORDER BY の目的について、詳細な説明を追加。

2005 年 12 月 5 日

新しい内容
  • ビュー定義での ORDER BY の目的について、詳細な説明を追加。