すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ORDER BY 句

最終更新日:Mar 29, 2026

ORDER BY 句は、1 つ以上の式に基づいてクエリ結果の行をソートします。この句がない場合、データベースは未指定の順序で行を返します。

構文

ORDER BY expression [ ASC | DESC ] [, ...]

expression には、以下を指定できます。

  • SELECT リスト内の出力列の名前

  • SELECT リスト内の出力列の序数 (左から右への位置)

  • SELECT リストに含まれていない列を含む、入力列の値から形成される任意の式

仕組み

行は、ORDER BY 句の最初の式によってソートされます。その式において 2 つの行が等しい場合は、次の式が適用されます。すべての指定された式で等しい行は、実装に依存した順序で返されます。

ソート方向:各式の後に ASC (昇順) または DESC (降順) を追加します。デフォルトは ASC です。

NULL 値:NULL 値は、昇順の結果では末尾に、降順の結果では先頭に表示されます。

文字列の照合順序:文字列データは、データベースクラスターの初期化時に設定される特定のロケールの照合順序を使用してソートされます。

制限事項

  • ORDER BYUNIONINTERSECT、または MINUS 操作の結果に適用される場合、式は出力列名または序数である必要があります。任意の式は許可されません。

  • ORDER BY 式が、出力列名と入力列名の両方に一致する単純な名前である場合、ORDER BY はそれを出力列名として扱います。これは、同じ状況における GROUP BY の動作とは逆であり、SQL 標準との互換性のために必要です。

列名または序数によるソート

以下の 2 つのクエリは、どちらも dname 列で結果をソートします。最初のクエリは列名を使用し、2 番目のクエリはその序数 (2dnameSELECT リストの 2 番目の列であるため) を使用します。

SELECT * FROM dept ORDER BY dname;
SELECT * FROM dept ORDER BY 2;

どちらも同じ結果を返します。

 deptno |   dname    |   loc
--------+------------+----------
     10 | ACCOUNTING | NEW YORK
     40 | OPERATIONS | BOSTON
     20 | RESEARCH   | DALLAS
     30 | SALES      | CHICAGO
(4 rows)

SELECT リストにない列によるソート

ORDER BY は、SELECT リストにない列を参照できます。次の文は、従業員名を選択しますが、従業員番号でソートします。

SELECT ename FROM emp ORDER BY empno;