バナー画像

SQLの基本構文の中で、データの並べ替えを行うための「ORDER BY」句は頻繁に利用されるため、プログラマーに取って必須知識の1つです。

本記事では、MySQL環境でデータの並べ替え「ORDER BY」の使い方について、サンプルSQLを交えながらご紹介していきたいと思います。

MySQLでORDER BYの基本的な使い方を学ぼう


データベースのテーブルからデータを抽出する際、並び順を指定しない場合どのような順序でデータが取得されるのかプログラマーには分かりません。

ORDER BY句を使用することで、SELECT句で抽出するデータをプログラマーが指定したカラムを条件に「昇順」「降順」で並び替えることが可能となります。

ORDER BY句の基本構文を確認しよう

まずORDER BYを使用した基本構文は下記の通りとなります。

SELECT カラム名, ... FROM テーブル名 ORDER BY カラム名, ...;

ORDER BYの後ろに指定したカラム名を昇順で並び替えます。

ORDER BY句でデータを降順に並び替える

ORDER BYではカラム名だけを記述した場合、「ASK(昇順)」がデフォルト設定となっています。

DESC(降順)を指定したい場合には下記のように記述します。

SELECT カラム名, ... FROM テーブル名 ORDER BY カラム名 DESC, ...;

MySQLでORDER BY句を確認するためのサンプルデータ


実際にMySQLでORDER BY句を利用してみる前にサンプルSQLで利用するサンプルデータをご紹介しておきます。

Userテーブルを作成する

今回はサンプルテーブルとして「User」テーブルを作成します。

create table user (id int, user_name varchar(20), age int, height double);

テーブルが作成出来たらテスト用のデータを追加してみましょう。

insert into user values(1, "ポテパン1", 23, 182.5);
insert into user values(2, "ポテパン2", 18, 165.3);
insert into user values(3, "ポテパン3", 23, 170.1);
insert into user values(4, "ポテパン4", 27, 169.7);

作成したデータは下記のようになります。

+------+---------------+------+--------+
| id   | user_name     | age  | height |
+------+---------------+------+--------+
|    1 | ポテパン1      |   23 |  182.5 |
|    2 | ポテパン2      |   18 |  165.3 |
|    3 | ポテパン3      |   23 |  170.1 |
|    4 | ポテパン4      |   27 |  169.7 |
+------+---------------+------+--------+

MySQL環境で実際のテーブルデータからORDER BYの使い方を理解しよう


テーブルの準備が出来たところで、実際にテーブルからデータを取得してORDER BYで並び替えるサンプルSQLをご紹介していきたいと思います。

ORDER BY句の基本を理解しよう

まずは年齢の昇順で並べ替えるサンプルSQLを確認してみましょう。

select * from user order by age;

実行結果は下記の通りとなり、「age」の昇順で並び替えられていることをご確認頂けます。

+------+---------------+------+--------+
| id   | user_name     | age  | height |
+------+---------------+------+--------+
|    2 | ポテパン2      |   18 |  165.3 |
|    1 | ポテパン1      |   23 |  182.5 |
|    3 | ポテパン3      |   23 |  170.1 |
|    4 | ポテパン4      |   27 |  169.7 |
+------+---------------+------+--------+

ORDER BY句に2つのカラムを指定してみよう

次に「age(年齢)」が同じデータが2つ以上存在する場合、2番目の条件として「height(身長)」の昇順で並び替えるサンプルSQLを実行してみましょう。

select * from user order by age, height;

実行した結果、下記の通り「height(身長)」の昇順で並び替えられています。

+------+---------------+------+--------+
| id   | user_name     | age  | height |
+------+---------------+------+--------+
|    2 | ポテパン2      |   18 |  165.3 |
|    3 | ポテパン3      |   23 |  170.1 |
|    1 | ポテパン1      |   23 |  182.5 |
|    4 | ポテパン4      |   27 |  169.7 |
+------+---------------+------+--------+
ポテパンダの一言メモ

ORDER BY句では先に指定したカラムから順に並び替えを行い、値が同じ場合には2番目以降に指定したカラムで並び替えが行われることを意識しておきましょう。

ORDER BY句で昇順のカラムと降順のカラムを両方設定してみよう

最後にORDER BY句に昇順のカラムと降順のカラム両方を指定したサンプルSQLをご紹介します。

基本の構文は変わらず、先に指定したカラムの並び替え条件から適用されていきます。

select * from user order by age desc, height;

実行した結果が下記の通りとなります。

+------+---------------+------+--------+
| id   | user_name     | age  | height |
+------+---------------+------+--------+
|    4 | ポテパン4      |   27 |  169.7 |
|    3 | ポテパン3      |   23 |  170.1 |
|    1 | ポテパン1      |   23 |  182.5 |
|    2 | ポテパン2      |   18 |  165.3 |
+------+---------------+------+--------+

「age(年齢)」を降順で並び替えた後、「height(身長)」を昇順で並び替えていることがサンプルデータからご確認頂けます。

さいごに:MySQLでORDER BYの使い方を理解して狙った順番でデータを取得しよう

本記事では、MySQL環境でのORDER BY句の使い方についてサンプルSQLを交えながらご紹介してきました。

ORDER BY句の基本的な記述方法はMySQL以外のデータベースでも同じですので、ORACLEなどMySQL以外のデータベースを利用する際にもご利用頂けます。

ORDER BYは利用機会も多いため、しっかりと挙動を把握し狙い通りにデータ抽出が出来るよう、きちんと使い方を把握しておきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。