取得データをソート
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);
テーブルには次のようなデータを追加してあります。
では「old」カラムの値を昇順に並べ替えてからデータを取得します。
mysql> select * from personal order by old;
今度は「old」カラムの値を降順に並べ替えてからデータを取得します。
mysql> select * from personal order by old desc;
次に「address」カラムの値を昇順に並べ替えてからデータを取得します。
mysql> select * from personal order by address;
最後に「address」カラムの値を昇順に並べ替えてから、「old」カラムの値を降順に並べ変えてデータを取得します。
mysql> select * from personal order by address, old desc;
最初のカラムの値でまずソートを行い、同じ値だったものだけを対象に次のカラムの値でソートを行ってデータを取得しています。
( Written by Tatsuo Ikura )