ORDER BYで並べ替える
行を昇順と降順に並べ替えます。
「ORDER BYで並べ替える」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。
順序が重要な理由
デフォルトでは、SELECTは順序が保証されていない状態で行を返します。データベースは、都合のよい順序で自由に返すことができます。
アルファベット順の一覧や新しいものから表示するフィードなど、予測可能な出力が必要な場合は、ORDER BYを使って明示的に指定する必要があります。
-- Without ORDER BY, row order is NOT guaranteed
SELECT name, price
FROM products;ORDER BY句
ORDER BYはクエリの終盤、WHEREの後でLIMITの前に置きます。並べ替えの基準にする列を指定します。
これはnameで商品をアルファベット順に並べ替えます。
SELECT name, price
FROM products
ORDER BY name;昇順がデフォルト
特に指定しなければ、並べ替えは昇順です。テキストではAからZ、数値では小さい順、日付では古い順になります。
明示的に指定するためにASCと書くこともできますが、結果は変わりません。
-- These two queries are identical
SELECT name, price FROM products ORDER BY price;
SELECT name, price FROM products ORDER BY price ASC;降順で並べ替える
DESCを追加すると順序を逆にできます。ZからA、大きい順、新しい順になります。
これは価格の高い商品から表示します。
SELECT name, price
FROM products
ORDER BY price DESC;日付で並べ替える
日付とタイムスタンプは時系列順に並べ替えられます。DESCを指定すると、最新の行から表示できます。これはアクティビティフィードやログでよく使うパターンです。
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC;SELECTしない列で並べ替える
並べ替えに使う列は、SELECTのリストに含まれていなくてもかまいません。ユーザーに表示しない項目を基準に並べ替えることもできます。
ここでは名前だけを表示し、内部では価格を基準に並べ替えています。
SELECT name
FROM products
ORDER BY price DESC;列の位置で並べ替える
PostgreSQLでは、SELECTリスト内の列の位置を指定して並べ替えることもできます。ORDER BY 2は「選択した2番目の列」を意味します。
簡単なクエリでは便利ですが、実際の列名を使うほうが明確で安全です。
-- 2 refers to price (the 2nd column)
SELECT name, price
FROM products
ORDER BY 2 DESC;式で並べ替える
保存されている列だけでなく、計算した値を基準に並べ替えることもできます。式は各行について評価され、その結果で並べ替えられます。
これは商品の総在庫額で順位付けします。
SELECT name, price, stock
FROM products
ORDER BY price * stock DESC;エイリアスで並べ替える
SELECTで式にエイリアスを付けると、そのエイリアスをORDER BYで再利用できます。クエリが読みやすくなります。
SELECT name, price * stock AS inventory_value
FROM products
ORDER BY inventory_value DESC;テキストの並べ替えにおける大文字と小文字の区別
テキストの並べ替えはデータベースの照合順序に従うため、大文字と小文字が予想と異なる順序になることがあります。
大文字と小文字を区別しない順序にするには、LOWER()で列を小文字化した値を基準に並べ替えます。
SELECT name
FROM products
ORDER BY LOWER(name);ORDER BYの位置
句の論理的な順序を覚えておきましょう。
FROMでテーブルを選択しますWHEREで行を絞り込みますORDER BYで残った行を並べ替えますLIMITで結果を制限します
並べ替えは常に絞り込みの後に行われます。
SELECT name, price
FROM products
WHERE price > 10
ORDER BY price DESC;確認問題
最も安い商品から表示するクエリはどれですか。
まとめ
これで行の順序を制御できるようになりました。
ORDER BY columnで結果を並べ替えますASC(デフォルト)は小さい順、DESCはその逆です- 列、位置、式、エイリアスを基準に並べ替えられます
- 大文字と小文字を区別しないテキストの並べ替えには
LOWER()を使います
次は、複数の列を同時に基準にして、同順位を解消する方法を学びます。
SELECT name, price
FROM products
ORDER BY price DESC;よくある質問
「ORDER BYで並べ替える」レッスンは無料ですか?
はい。「ORDER BYで並べ替える」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。
「ORDER BYで並べ替える」で何を学びますか?
行を昇順と降順に並べ替えます。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SQL Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ORDER BYで並べ替える」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSQL Academyレッスンでコードを書いて実行できますか?
はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ORDER BYで並べ替える
- 複数の列で並べ替える
- LIMITとOFFSET
- 上位・下位N件を取得する