0Pricing
SQL Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ORDER BYで並べ替える
  2. 複数の列で並べ替える
  3. LIMITとOFFSET
  4. 上位・下位N件を取得する
← SQL Academyに戻る