取得データをソート

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

SELECT カラム名 , ... FROM テーブル名
 ORDER BY カラム名1 [ASC | DESC], カラム名2 [ASC | DESC], ...;

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

具体的には次のようになります。

create table customer(id integer, name text, address text);

select * from customer order by id desc;

「id」カラムの値を使い降順にソートしたデータを取得します。

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

具体的には次のようになります。

create table customer(id integer, name text, address text);

select * from customer order by id desc, address asc;

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。現時点ではソートは行っていないので登録された順に表示されます。

p2-1

「old」カラムを昇順にソートしてデータを取得します。

p2-2

今度は「old」カラムを降順にソートしてデータを取得します。

p2-3

数値だけではなく文字列が格納されたカラムでもソートは可能です。「address」カラムを昇順にソートしてデータを取得します。

p2-4

「address」カラムを昇順にソートした上でさらに「old」カラムを降順にソートしてデータを取得します。

p2-5

この場合、まず「address」カラムの値でソートが行われ、そして「address」カラムが同じ値の行の集まり毎に「old」カラムの値でソートが行われています。