データを昇順や降順でソート(並べ替え)するには「ORDER BY」句を使います。
ここでは MySQLコマンド「ORDER BY」の具体的な使い方を解説していきます。
目次
「ORDER BY」の基本
「ORDER BY」は、「SELECT」などと組み合わせてデータを検索するときに使います。
例えば以下は「SELECT」文と組み合わせて使った場合の例。
昇順でソートする場合
SELECT * FROM テーブル名 ORDER BY カラム名;
降順でソートする場合
カラム名の後ろに DESC
をつけます。
SELECT * FROM テーブル名 ORDER BY カラム名 DESC;
SELECT 文の詳しい使い方はこちら。
データを昇順でソートする
実際にMySQLサーバーに接続し、動作を確認してみましょう。
あらかじめ「test」データベースの「users」テーブルに、以下のようにデータが保存されている例で進めていきます。
name | age |
佐藤 | 21 |
山下 | 47 |
鈴木 | 25 |
田中 | 21 |
山田 | 32 |
データを保存するコマンド例
CREATE DATABASE test;
USE test;
CREATE TABLE users (name VARCHAR(100), age INT);
INSERT INTO users (name, age) VALUES ('佐藤', 21);
INSERT INTO users (name, age) VALUES ('山下', 47);
INSERT INTO users (name, age) VALUES ('鈴木', 25);
INSERT INTO users (name, age) VALUES ('田中', 21);
INSERT INTO users (name, age) VALUES ('山田', 32);
CREATE DATABASE 文の詳しい使い方はこちら。
USE 文の詳しい使い方はこちら。
CREATE TABLE 文の詳しい使い方はこちら。
INSERT INTO 文の詳しい使い方はこちら。
それでは「age」カラムの値の昇順で、データをソートしてみましょう。コマンドは以下。
SELECT * FROM users ORDER BY age;
コマンドを実行すると、以下のように「age」カラムの数字が小さい順で表示されました。
以下のように ASC
を後ろにつけると、明示的に昇順を表すことができます。デフォルトでは昇順になっているので、つけない場合が多いです。
SELECT * FROM users ORDER BY age ASC;
データを降順でソートする
今度は「age」カラムの値の降順で、データをソートしてみましょう。コマンドは以下。
SELECT * FROM users ORDER BY age DESC;
コマンドを実行すると、以下のように「age」カラムの数字が大きい順で表示されました。
複数のカラムを指定してソートする
カンマ(,
)で区切ることで、複数のカラムを指定してソートすることもできます。
以下のようにすると、まず「age」カラムの値を使って降順でソートし、同じ値の場合は「name」カラムの値を使って昇順でソートします。
SELECT * FROM users ORDER BY age DESC, name;
「WHERE」と組み合わせて使う
今度は「WHERE」と組み合わせて使ってみましょう。
以下のようにすると、先頭に「山」がつくデータを検索し、「age」カラムの値を使って昇順にソートします。
SELECT * FROM users WHERE name LIKE '山%' ORDER BY age;
ここまでが「ORDER BY」の基本!
理解をさらに深めたい方は以下からの内容もご覧ください。
任意の順番にソートする
以下のようにFIELD関数を組み合わせることで、指定したデータの順にソートすることもできます。
ORDER BY FIELD(カラム名, データ1, データ2, ……);
以下は「age」カラムの値が「32」、「21」、「25」の順にデータを並べ替える例。
SELECT * FROM users ORDER BY FIELD(age, 32, 21, 25);
指定しなかった「47」が先頭で、残りは指定した順にソートされます。
ある条件に該当するデータの順にソートする
「ORDER BY」で条件を指定することで、条件に該当するデータの順にソートすることもできます。
以下のコマンドで、「age」カラムの値が「30」以上のデータが上に並びます。
SELECT * FROM users ORDER BY age >= 30 DESC;
大文字と小文字を区別してソートする
文字列の値をソートする場合は、通常はアルファベットの大文字と小文字を区別しません。
カラム名の手前に BINARY
をつけることで、大文字と小文字を区別してソートすることができます。
「name」カラムの値の大文字と小文字を区別してソートするコマンド例
SELECT * FROM users ORDER BY BINARY name;
まとめ
以上、MySQLコマンド「ORDER BY」の使い方でした!
ここまでの内容をまとめておきます。
- 「ORDER BY」でデータを昇順や降順でソート(並べ替え)することができる。
- 昇順で並べ替えるには
ASC
(省略可能)、降順で並べ替えるにはDESC
をカラム名の後ろにつける。 - 複数のカラムを指定することで、初めに指定した並べ替えで条件が同じ場合は、次に指定したカラムの値の順でソートすることができる。