取得するデータをソートする(ORDER BY句)

広告
eyecatch

ORDER BY 句を使うことで SELECT 文でデータを取得する時に指定したカラムの値を対象にソートした結果を取得することができます。ここでは ORDER BY 句を使って取得するデータをソートする方法について解説します。

取得するデータをソートする

ORDER BY 句を使用すると、データを取得する時に指定したカラムの値を対象にソートしてから取得することができます。使い方は次の通りです。

SELECT col_name1 [, col_name2 ...] FROM table_name
  ORDER BY col_name [ASC | DESC], ... 

ORDER BY 句の後に指定したカラム名の値を使ってソートを行います。昇順でソートする場合には ASC 、降順でソートする場合には DESC を指定します。省略した場合は昇順でソートが行われます。複数のカラム名を指定した場合には、最初のカラム名でソートを行ったあと、次に最初のカラムで同じ値だったものを対象に次のカラム名でソートを行っていきます。

-- --

それでは実際に試してみます。次のようなテーブルを作成しました。

create table user (name varchar(10), address varchar(10), old int);

取得するデータをソートする(1)

テーブルには次のようなデータを追加しています。

insert into user values ('Yamada', 'Tokyo', 25);
insert into user values ('Suzuki', 'Osaka', 19);
insert into user values ('Kudou', 'Nagoya', 34);
insert into user values ('Shima', 'Tokyo', 17);
insert into user values ('Nishi', 'Chiba', 28);
insert into user values ('Harada', 'Osaka', 35);
insert into user values ('Yasuda', 'Fukuoka', 16);
insert into user values ('Sugisaki', 'Tokyo', 41);

取得するデータをソートする(2)

addrss カラムの値を対象にソートを行ってからデータを取得します。

select * from user order by address;

取得するデータをソートする(3)

明示的に指定しない場合は昇順でソートが行われます。今度は同じ address カラムを対象に降順でソートを行ってからデータを取得してみます。

select * from user order by address desc;

取得するデータをソートする(4)

-- --

次にソートの対象として 2 つのカラムを指定してみます。最初に address カラムの値でソートを行い、 address カラムの値が同じデータに関して old カラムの値でソートを行います。カラム毎に昇順か降順かは指定できるので、今回は address カラムに関しては降順、 old カラムに関しては昇順でソートを行います。

select * from user order by address desc, old asc;

取得するデータをソートする(5)

-- --

ORDER BY 句を使って指定したカラムの値を使ってソートを行ってからデータを取得する方法について解説しました。

MySQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。