SQL入門 STEP5|ORDER BYで並び替えよう
取得したデータを並び替えてみよう
STEP4では、WHEREを使って条件に合ったデータだけを取得しました。
例えば、5000円以上の商品を探すなら次のように書きました。
SELECT * FROM products
WHERE price >= 5000;これで必要な商品を絞り込むことはできます。
では、
「価格が安い商品から順番に見たい」
という場合はどうすればいいでしょうか。
こんなときに使うのがORDER BYです。
ORDER BYとは?
SELECTで取得したデータの並び順を指定するときに使います。
例えば、
- 価格が安い順
- 価格が高い順
- 商品IDが小さい順
といった並び替えができます。

欲しいデータを取ってくるだけじゃなくて、見やすい順番にもできるんだね♪
価格が安い順に並べてみよう
まずは、商品を価格の安い順に並べてみます。
Query Toolで次のSQLを実行してください。
SELECT * FROM products
ORDER BY price ASC;実行すると、価格の小さい商品から順番に表示されます。
product_id | product_name | price
-----------+--------------+-------
5 | USBメモリ | 2000
2 | マウス | 3000
3 | キーボード | 8000
4 | モニター | 30000
1 | ノートPC | 1200002000円のUSBメモリから始まり、一番高い120000円のノートPCが最後になりました。
今回追加したのは、
ORDER BY price ASCです。
ORDER BYの後ろには、並び替えに使いたいカラムを指定します。
今回はpriceを指定しているので、価格を基準に並び替えています。
ASCは小さいものから並べる
先ほどのSQLでは、priceの後ろにASCを書きました。
ORDER BY price ASCASCは昇順を表します。
数値なら、小さい値から大きい値へ並びます。
2000
3000
8000
30000
120000数字がだんだん大きくなっていますね。
ASC(昇順)
小さい値から大きい値へ並べます。
1 → 2 → 3 → 4 → 5
価格なら、安い商品から高い商品へ並べるときに使えます。
価格が高い順に並べてみよう
今度は反対に、価格が高い商品から並べてみます。
この場合はDESCを使います。
SELECT * FROM products
ORDER BY price DESC;実行結果は次のようになります。
product_id | product_name | price
-----------+--------------+-------
1 | ノートPC | 120000
4 | モニター | 30000
3 | キーボード | 8000
2 | マウス | 3000
5 | USBメモリ | 2000今度は120000円のノートPCから始まり、2000円のUSBメモリが最後になりました。
DESCは降順を表します。
ASCとDESC
ASC:昇順
→ 小さい値から大きい値
DESC:降順
→ 大きい値から小さい値
価格なら、
ASC → 安い順
DESC → 高い順
と考えると分かりやすいです。

ASCとDESCは最初は迷っても大丈夫!
使いながら覚えていこう♪
ASCは省略できる
実は、昇順のASCは省略できます。
次の2つのSQLは同じ並び順になります。
SELECT * FROM products
ORDER BY price ASC;SELECT * FROM products
ORDER BY price;ASCもDESCも指定しなかった場合は、昇順で並び替えられます。
そのため、
ORDER BY priceだけでも価格の安い順になります。
ただ、SQLを読み返したときに並び順が分かりやすいので、この講座では基本的にASCまで書いていきます。
商品IDでも並び替えられる
ORDER BYで指定できるのは価格だけではありません。
商品IDで並び替えてみましょう。
SELECT * FROM products
ORDER BY product_id DESC;今回はproduct_idを降順にしているので、
5
4
3
2
1の順番で商品が表示されます。
このように、
ORDER BY カラム名 ASCまたは、
ORDER BY カラム名 DESCと書くことで、並び替えに使うカラムを変更できます。
WHEREとORDER BYを一緒に使ってみよう
WHEREとORDER BYを組み合わせることもできます。
例えば、
「5000円以上の商品だけを、価格が安い順に表示したい」
とします。
SELECT * FROM products
WHERE price >= 5000
ORDER BY price ASC;実行すると、
product_id | product_name | price
-----------+--------------+-------
3 | キーボード | 8000
4 | モニター | 30000
1 | ノートPC | 120000となります。
まずWHEREの条件に合う商品が対象になり、その結果がORDER BYで並び替えられています。
ここで、SQLを書く順番にも注目してみましょう。
SELECT ...
FROM ...
WHERE ...
ORDER BY ...WHEREを使う場合は、WHEREを書いた後にORDER BYを書きます。
順番を逆にしないようにしましょう。

WHEREで商品を絞ってから、ORDER BYで見やすく並べられるんだね!
複数のカラムを使って並び替えてみよう
ORDER BYには、複数のカラムを指定することもできます。
ただ、今のproductsでは商品の価格がすべて違うので、少し分かりにくいですね。
例えば、次のような商品が入っていたとします。
product_id | product_name | price
-----------+--------------+------
2 | マウス | 3000
6 | ケーブル | 3000
7 | マウスパッド | 3000同じ3000円の商品が3つあります。
ここで、
ORDER BY price ASC, product_id ASCとすると、
まずpriceで並び替え、priceが同じ場合はproduct_idで並び替える
という指定ができます。
SQL全体では次のようになります。
SELECT * FROM products
ORDER BY price ASC, product_id ASC;今の練習用データでは価格が重複していないので、結果に大きな違いはありません。
今後、同じ値を持つデータが増えてきたときに使える書き方です。
ORDER BYに複数のカラムを書くと?
左側に書いたカラムから順番に並び替えます。
ORDER BY price ASC, product_id ASCなら、
priceで並び替えるpriceが同じデータはproduct_idで並び替える
という順番です。
SELECTにないカラムでも並び替えられる
STEP4では、SELECTで表示するカラムとWHEREで条件に使うカラムは別でもよいことを確認しました。
ORDER BYも同じです。
例えば、
SELECT product_name FROM products
ORDER BY price DESC;と書くことができます。
表示するのはproduct_nameだけですが、並び替えにはpriceを使っています。
そのため、商品名が価格の高い商品から順番に表示されます。
product_name
------------
ノートPC
モニター
キーボード
マウス
USBメモリ結果に価格は表示されませんが、内部ではpriceを使って並び替えています。
よくある間違い
ASCとDESCを逆にしてしまう
最初のうちは、どちらが昇順だったか分からなくなることがあります。
ASC → 小さい値から大きい値
DESC → 大きい値から小さい値迷ったら確認しながら使えば問題ありません。
WHEREとORDER BYの順番を逆にする
WHEREと一緒に使う場合は、
SELECT * FROM products
WHERE price >= 5000
ORDER BY price ASC;の順番です。
WHERE → ORDER BY
と書きます。
並び替えるカラム名を間違える
例えば、今回のテーブルにproduct_priceというカラムはありません。
ORDER BY product_price ASCと書くとエラーになります。
カラム名が分からなくなったときは、STEP2で作ったproductsテーブルの構造を確認してみましょう。
STEP5のまとめ
STEP5のポイント
ORDER BYを使うと取得結果を並び替えられるASCは昇順DESCは降順ASCは省略できる- ORDER BYには並び替えに使うカラムを指定する
- WHEREと組み合わせる場合は
WHERE → ORDER BYの順番で書く - 複数のカラムを使った並び替えもできる
今回はORDER BYを使って、取得した商品を好きな順番に並び替えました。
WHEREと組み合わせれば、
「条件に合う商品を探して、さらに見やすい順番に並べる」
ところまでできるようになります。
SELECT、WHERE、ORDER BYはこれからも何度も使います。
書き方を丸暗記するより、実際にSQLを書きながら少しずつ慣れていきましょう。

STEP5クリア!
欲しいデータを探して、好きな順番に並べられるようになったね♪
次のSTEPへ
ここまで使ってきたproductsの商品データは、STEP3で練習用としてまとめて登録しました。
次は、そのとき詳しく説明しなかったINSERTを使います。
新しい商品を自分でテーブルへ追加しながら、
「どのテーブルの、どのカラムに、どんな値を登録するのか」
を確認していきましょう。
学習内容を確認したいときは、SQL入門の一覧から各STEPを確認できます。
