- カテゴリ:
ORDER BY¶
SELECT リストからの結果テーブルの行の順序を指定します。
構文¶
SELECT ...
FROM ...
ORDER BY orderItem [ , orderItem , ... ]
[ ... ]
条件:
orderItem ::= { <column_alias> | <position> | <expr> } [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ]
パラメーター¶
{ ASC | DESC }
オプションで、昇順(低い順)または降順(高い順)でソートキーの値を返します。
デフォルト:
ASC
NULLS { FIRST | LAST }
オプションで、ソート順(
ASC
またはDESC
)に基づいて、 NULL 値を NULL 以外の値の前後に返すかどうかを指定します。デフォルト:ソート順(
ASC
またはDESC
)に依存します。詳細については、以下の使用上の注意をご参照ください
使用上の注意¶
すべてのデータは、ASCII テーブルの各文字の数値バイト値に従ってソートされます。UTF-8エンコードがサポートされています。
数値の場合、小数点の前の先行ゼロと小数点の後の後続ゼロ(
0
)は、ソート順に影響しません。特に指定がない限り、 NULL 値は、 NULL 以外の値よりも高いと見なされます。その結果、 NULLS の順序はソート順に依存します。
ソート順が
ASC
の場合は、 NULLS が最後に返されます。強制的に NULLS を最初にするには、NULLS FIRST
を使用します。ソート順が
DESC
の場合は、最初に NULLS が返されます。強制的に NULLS を最後にするには、NULLS LAST
を使用します。
異なるデータ型の要素を含む配列など、 半構造化データ 内の異なるデータ型の値に対しては、並べ替え順の一貫性が保証されません。
Top-Kプルーニングは、 LIMIT と ORDER BY の両方の句を含むクエリのパフォーマンスを向上させることができます。詳細については、 クエリパフォーマンス向上のためのTop-Kプルーニング をご参照ください。
ORDER BY は、クエリのさまざまなレベルで使用できます。たとえば、サブクエリや OVER() サブ句内などです。サブクエリまたはサブ句内の ORDER BY は、そのサブクエリまたはサブ句内のみで適用されます。たとえば、次のクエリの ORDER BY は、クエリの最も外側のレベルではなく、サブクエリ内のみで結果を並べ替えます。
SELECT * FROM ( SELECT branch_name FROM branch_offices ORDER BY monthly_sales DESC LIMIT 3 );
この例では、サブクエリで ORDER BY が指定されているため、サブクエリは月次売上の順に名前を返します。サブクエリの ORDER BY は、外部クエリには適用されません。このクエリは、毎月の売上が最も多かった3つの支店名を返しますが、必ずしも月次の売上順ではありません。
並べ替えのコストは高価になる場合があります。外部クエリの結果を並べ替える場合は、クエリの最上位でのみ
ORDER BY
句を使用し、必要がない限り、サブクエリでORDER BY
句を使用しないようにします。
例¶
文字列のソート順の例:
SELECT column1
FROM VALUES ('a'), ('1'), ('B'), (null), ('2'), ('01'), ('05'), (' this'), ('this'), ('this and that'), ('&'), ('%')
ORDER BY column1;
+---------------+
| COLUMN1 |
|---------------|
| this |
| % |
| & |
| 01 |
| 05 |
| 1 |
| 2 |
| B |
| a |
| this |
| this and that |
| NULL |
+---------------+
数字のソート順の例:
SELECT column1
FROM VALUES (3), (4), (null), (1), (2), (6), (5), (0005), (.05), (.5), (.5000)
ORDER BY column1;
+---------+
| COLUMN1 |
|---------|
| 0.05 |
| 0.50 |
| 0.50 |
| 1.00 |
| 2.00 |
| 3.00 |
| 4.00 |
| 5.00 |
| 5.00 |
| 6.00 |
| NULL |
+---------+
NULL 値のソート順の例:
SELECT column1
FROM VALUES (1), (null), (2), (null), (3)
ORDER BY column1;
+---------+
| COLUMN1 |
|---------|
| 1 |
| 2 |
| 3 |
| NULL |
| NULL |
+---------+
SELECT column1
FROM VALUES (1), (null), (2), (null), (3)
ORDER BY column1 NULLS FIRST;
+---------+
| COLUMN1 |
|---------|
| NULL |
| NULL |
| 1 |
| 2 |
| 3 |
+---------+
SELECT column1
FROM VALUES (1), (null), (2), (null), (3)
ORDER BY column1 DESC;
+---------+
| COLUMN1 |
|---------|
| NULL |
| NULL |
| 3 |
| 2 |
| 1 |
+---------+
SELECT column1
FROM VALUES (1), (null), (2), (null), (3)
ORDER BY column1 DESC NULLS LAST;
+---------+
| COLUMN1 |
|---------|
| 3 |
| 2 |
| 1 |
| NULL |
| NULL |
+---------+