取得データをソート

広告

SELECT文でデータを取得する時に、ソートしてから取得する方法を確認します。書式は次の通りです。

SELECT col_name, ... FROM tbl_name ORDER BY col_name [ASC | DESC], ... ;

ORDER BY句の後にソートを行うカラム名を指定します。そして昇順でソートする場合には「ASC」、降順でソートする場合には「DESC」を指定します。省略した場合は昇順でソートが行われます。

例えば次のように記述します。

SELECT * FROM seiseki ORDER BY total DESC;

「total」カラムの値を対象に降順にソートしてからデータを取得します。

ソートする対象のカラムは複数指定することができます。その場合はカンマ(,)で区切り続けて記述して下さい。複数のカラムを指定した場合には、まず最初のカラムでソートを行い、次に最初のカラムで同じ値だったものだけを対象に2番目のカラムでソートを行います。3つ以上指定した場合も同じように行います。

例えば次のように記述します。

SELECT * FROM seiseki ORDER BY total DESC, id;

「total」カラムの値を対象に降順にソートし、同じ値のものは「id」カラムの値を対象に昇順にソートしてからデータを取得します。

サンプル

実際に試してみます。まず次のようなテーブルを作成します。

mysql> create table personal(name varchar(20), address varchar(20), old int);

p11-1

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

p11-2

では「old」カラムの値を昇順に並べ替えてからデータを取得します。

mysql> select * from personal order by old;

p11-3

今度は「old」カラムの値を降順に並べ替えてからデータを取得します。

mysql> select * from personal order by old desc;

p11-4

次に「address」カラムの値を昇順に並べ替えてからデータを取得します。

mysql> select * from personal order by address;

p11-5

最後に「address」カラムの値を昇順に並べ替えてから、「old」カラムの値を降順に並べ変えてデータを取得します。

mysql> select * from personal order by address, old desc;

p11-6

最初のカラムの値でまずソートを行い、同じ値だったものだけを対象に次のカラムの値でソートを行ってデータを取得しています。

( Written by Tatsuo Ikura )