ORDER BY
ORDER BY 句は、SQLで SELECT ステートメントの結果セットを並べ替えるために使用されます。 つまり、1 つ以上の列の値に基づいて出力の行が配置されます。
これは、データを解釈および使用しやすい方法で整理するために不可欠です。 並べ替えの基準となる列を 1 つ以上指定でき、並べ替え順序を昇順 (最小から最大、A から Z) または降順 (最大から最小、または Z から A) で制御できます。 ORDER BY を指定しない場合、返される行の順序は予測できません。
昇順での並べ替え (既定)
SELECT *
FROM sales.products
ORDER BY price;
このクエリでは、価格の昇順で並べ替えられた製品が取得されます (ORDER BY の既定の動作)。
冗長ですが、クエリの末尾に ASC を明示的に追加することで、読みやすさが向上する場合があります。
順序を変更するには、次の例に示すように、明示的に指定する必要があります。
降順での並べ替え
SELECT *
FROM sales.products
ORDER BY price DESC;
このクエリでは、価格の降順で並べ替えられた製品が取得されます。
複数の列による並べ替え
SELECT *
FROM sales.customers
ORDER BY country, city;
このクエリは、sales.customers テーブルからすべての列の (*) を取得し、結果の行を並べ替えます。
並べ替えは、次の 2 段階で行われます。最初に、結果は国の列のアルファベット順に並べ替えられます。 つまり、"Argentina" のすべての顧客がグループ化され、次に "Austria" の顧客がグループ化されます (以降も同様です)。
- 同じ国の顧客の各グループ内で、結果が市区町村の列のアルファベット順に並べ替えられます。 このため、"Germany" の顧客が複数存在する場合は、都市名 ("Berlin" の前に "Aachen" など) で並べ替えられます。
本質的に、このクエリは主に country で並べ替えられた顧客リストを提供し、その後、各 country 内では city で並べ替えられます。 これにより、特定の地域の顧客を簡単に見つけることができます。
さらに、この方法を ASC または DESC 修飾子と組み合わせることで、各列の並べ替え方向を完全に制御できます。
SELECT *
FROM sales.customers
ORDER BY country ASC, city DESC;
このクエリでは、各国内の都市を降順に整理しながら、国を昇順で並べ替えます。