SQLで並び替え!ORDER BYを基礎から応用まで学ぼう!

50種類以上のIT教材を無料で使える!
0円から学習できるオンラインITスクール「侍テラコヤ」
→さっそく登録する

みなさんこんにちは! フリーランスプログラマーのsatoです。

今回は「ORDER BY」句について見ていきましょう。「ORDER BY」は一言で言うとソートを行う仕組みです。シンプルな機能ですね! しかしシンプルゆえに奥が深いのも事実です。

  • 昇順・降順はどう設定するのか?
  • 「GROUP BY」と組み合わせた時はどうなるの?

などなど疑問は尽きないものです。今回はそんな疑問についても解消していきましょう。

「ORDER BY」の使い方!

先ほども伝えた通りORDER BYはソートを行ってくれる機能です。まずはその基本的な使い方から見ていきましょう。

今回使用するテーブル

今回はシンプルなテーブルを用意しています。

userテーブル:

+------+--------------+
| id   | name         |
+------+--------------+
|    1 | ヤマダ       |
|    2 | スズキ       |
|    3 | タナカ       |
|    4 | タカハシ     |
|    5 | ワタナベ     |
+------+--------------+

基本的な使い方

「ORDER BY」の基本的な使い方は以下の通りです。

SELECT [表示要素名] FROM [テーブル名] ORDER BY [ソートする要素名] [昇順・降順の指定];

もっと具体的に見てみましょうか。例えば先ほどのuserテーブルを、idの降順で表示しようとした場合は以下となります。

実行命令:

SELECT * FROM user ORDER BY id DESC;

結果:

+------+--------------+
| id   | name         |
+------+--------------+
|    5 | ワタナベ     |
|    4 | タカハシ     |
|    3 | タナカ       |
|    2 | スズキ       |
|    1 | ヤマダ       |
+------+--------------+

id順の降順にソートできていますね!

昇順・昇順の指定

先ほどの[昇順・降順の指定]には以下の二種類が指定できます。

  • ASC・・・昇順
  • DESC・・・降順

また何も指定しなかった場合のデフォルトは昇順となります。

複数の要素でソートをする場合

「ORDER BY」の後ろのソート指定は「,」区切りで複数指定することも可能です。以下は二つ指定をしている例です。

SELECT * FROM user ORDER BY id DESC, name ASC;

【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

もちろん「WHERE」も同時につけられる

条件を指定する「WHERE」句も同時に指定できます。同時に使用する場合の注意点としては、先にWHERE句を書く必要があることでしょうか。例えば先ほどの命令に「idが3より大きい」という条件を付け加えるなら以下のようになります。

実行命令:

SELECT id,name FROM user WHERE 3 < id  ORDER BY id DESC;

結果:

+------+--------------+
| id   | name         |
+------+--------------+
|    5 | ワタナベ     |
|    4 | タカハシ     |
+------+--------------+

「GROUP BY」と同時にも使える

グループ化を行う「GROUP BY」とも同時に使用が可能です。例えば、同一名ごとにグループ化して、その数を表示する。かつ、その数でソートをしたい場合は、以下のような書き方になるでしょう。

SELECT name,count(name) as name_num FROM game_character GROUP BY name ORDER BY name_num DESC;

文法的には先に「GROUP BY」を書く必要がある点に注意しましょう。あとは、グループ化されたあとのものに、ソートをかけることになるということにも注意が必要でしょう。

また「GROUP BY」の詳細は以下の記事にまとめてありますので、合わせて使う人はぜひ読んでみてください。

【SQL】GROUP BYで自在に集計!集計関数やHAVINGと合わせて使おう
更新日:2023年3月21日

【何から学べばいいかわからない…そんな悩みを解決します!】

完全無料ですぐわかる「プログラミング学習プラン診断」

・適性にあわせて学習プランを診断
・完全無料で気軽に診断できる
・学習の悩みもまるっと解決

さっそく診断してみる

まとめ

今回は「ORDER BY」について見てきました。ソートを行うこの命令。状況によっては結構多用することになるでしょう。

例えば順位表示や、見栄えの調整などでよく使われるはずです。単体で使うことより、WHEREなどで条件をつけて使用することも多いため、今回学んだことを活用してみてください。

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

Writer

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close