- カテゴリ:
ORDER BY¶
SELECT リストからの結果テーブルの行の順序を指定します。
構文¶
特定の列による並べ替え
条件:
すべての列による並べ替え
パラメーター¶
{ ASC | DESC }オプションで、昇順(低い順)または降順(高い順)でソートキーの値を返します。
デフォルト: ASC
NULLS { FIRST | LAST }オプションで、ソート順(ASC または DESC)に基づいて、NULL 値を NULL 以外の値の前後に返すかどうかを指定します。
デフォルト:ソート順(ASC または DESC)に依存します。詳細については、以下の使用上の注意をご参照ください
ALLSELECT リストで指定されたすべての列で結果を並び替えます。結果は、列で表示される順序で並べ替えられます。
たとえば、 SELECT リストには次が含まれます。
結果は最初に
col_1、次にcol_2、最後にcol_3で並び替えられます。注釈
SELECT リストの列で集計関数を使用している場合、ORDERBYALL は指定できません。
使用上の注意¶
すべてのデータは、ASCII テーブルの各文字の数値バイト値に従ってソートされます。UTF-8エンコードがサポートされています。
数値の場合、小数点の前の先行ゼロと小数点の後の後続ゼロ(
0)は、ソート順に影響しません。
NULLS FIRST または NULLS LAST が指定されていない場合、NULL 値の順序は DEFAULT_NULL_ORDERING パラメーターの設定とソート順序に依存します。
ソート順が ASC (デフォルト)で、DEFAULT_NULL_ORDERING パラメーターが
LAST(デフォルト)にセットされている場合、NULL の値が最後に返されます。したがって、特に指定がない限り、NULL の値は、NULL 以外の値よりも高いとみなされます。ソート順が ASC で、DEFAULT_NULL_ORDERING パラメーターが
FIRSTにセットされている場合、NULL の値が最初に返されます。ソート順が DESC で、DEFAULT_NULL_ORDERING パラメーターが
FIRSTにセットされている場合、NULL の値が最後に返されます。ソート順が DESC で、DEFAULT_NULL_ORDERING パラメーターが
LASTにセットされている場合、NULL の値が最初に返されます。
異なるデータ型の要素を含む配列など、 半構造化 データ内の異なるデータ型の値に対しては、ソート順の一貫性が保証されません。
Top-Kプルーニングは、 LIMIT と ORDER BY の両方の句を含むクエリのパフォーマンスを向上させることができます。詳細については、 クエリパフォーマンス向上のためのTop-Kプルーニング をご参照ください。
ORDER BY句は、サブクエリ内やウィンドウ関数のOVER()句内など、クエリのさまざまなレベルで使用できます。サブクエリ内やOVER()句内のORDER BY句は、そのコンテキストでのみ適用されます。たとえば、次のクエリのORDER BY句は、クエリの最外部レベルではなく、サブクエリ内でのみ結果を並べ替えます。
この例では、サブクエリでORDER BY句が指定されているため、サブクエリは月次の売上順に名前を返します。サブクエリのORDER BY句は、外部クエリには適用されません。このクエリは、毎月の売上が最も多かった3つの支店名を返しますが、必ずしも月次の売上順ではありません。
並べ替えのコストは高価になる場合があります。外部クエリの結果を並べ替える場合は、クエリの最上位でのみORDER BY句を使用し、必要がない限り、サブクエリでORDER BY句を使用しないようにします。
同様に、ORDER BYと:doc:`LIMIT <limit>`(またはFETCH)句が異なるネストレベルにある場合、結果が予測不能になる可能性があります。詳細と例については、:ref:`LIMIT/FETCHの使用上の注意<label-limit_cmd_usage_notes>`を参照してください。
例¶
次の例は、 ORDERBY を使用して結果を並べ替える方法を示しています。
文字列値による並べ替え¶
次の例では、結果を文字列値で並べ替えています。
数値での並べ替え¶
次の例では、結果を数値で並べ替えています。
NULLS を最初または最後に並び変える¶
次の例では、 DEFAULT_NULL_ORDERING パラメーターを:code:LAST に設定して、セッション内のすべてのクエリを NULLS を最後に並べ替えるように構成します。
次の例では、クエリで NULLS FIRST を指定して DEFAULT_NULL_ORDERING パラメーターを上書きします。
次の例では、 DEFAULT_NULL_ORDERING パラメーターを FIRST に設定して、 NULLS を最初に並べ替えます。
次の例では、クエリで NULLS LAST を指定して DEFAULT_NULL_ORDERING パラメーターを上書きします。
SELECT リストのすべての列で並べ替えます。¶
このセクションの例を実行するには、次のテーブルを作成します。
次の例では、テーブル内にあるすべての列で結果を並べ替えています。
以下に示すように、結果はで最初に a 列、次に s 列、最後に b 列(テーブルで列が定義された順序)で並べ替えられます。
次の例では、結果を昇順に並べ替えています。
次の例では、セッション中に実行されるすべてのクエリに対して NULL 値を最後に並べ替えるように DEFAULT_NULL_ORDERING パラメーターを設定します。
次の例では、 NULLSFIRST を指定して、その設定を上書きします。
次の例では、 b、 s および a の順序で列を返します。結果は最初に b 、次に s 、最後に a で並べ替えられます。