検索結果をソートする

select文でデータを取得した時、あるフィールドの昇順とか降順にソートして表示したい場合があります。
この場合、SQLでは order by を使用します。指定する場所はwhere句の後になります。

select   pn,order_no
from     parts_tbl
order by order_no asc;
上記のSQL文にはwhere句がないのでfrom句の後にorder byを指定します。指定方法は

order by フィールド名 というように書きます。上のSQL文にはフィールド名の後に asc キーワードが指定されてますが、これは昇順にソートしたい場合に指定します。但し、ascを省略した場合、デフォルトで昇順にソートされますのでascは指定してもしなくても同じになります。
逆に、降順にソートしたい場合は

order by フィールド名 desc

というように指定しなくてはいけません。

具体的に、下図のような表があるとします。



これに対して上のSQL文を実行してorder_noの昇順にソートしなおした気かkが下図のようになります。




order byは一つの列だけでなく、複数の列を指定することも出来ます。例えば

order by フィールド1,フィールド2

と言った感じでカンマ区切りで複数のフィールドを指定できます。
この時のソートはまず、フィールド1で昇順にソートします。その後にフィールド2で昇順にソートします。
以下の例を見てください。



このような表をまずフィールド1でソートします。下図がその結果です。



次にこの結果に対してフィールド2でソートします。下図がその結果です。



order byで複数列指定した場合はこのようにソートが行われていきます。


初版2006/04/11 :最終更新2006/04/11
HOME