【SQL】検索結果を並べ替えるORDER BYの使い方を解説する!

Web技術
スポンサーリンク

検索結果を昇順や降順に並べ替えたい。

ORDER BY句ってどうやって使うの?

わかりやすく教えて欲しい。

こういった疑問にこたえます。

この記事を読めば
  • 検索結果を並べ替えることができるようになる
  • 複数のソートキーを指定して並べかえる方法がわかる

エンジニアの僕がわかりやすく解説します。

ORDER BYの使い方

一般にテーブルからデータを選択する場合、その順番は特に指定がない限りどんな順番で並ぶか全くわかりません。

同じSELECT文であっても実行するたびに並び順が変わる可能性があります。

結果を順番に並べたい場合は、SELECT文の文末にORDER BY句を書くことで明示的に行の順番を指定することができます。

ORDER BY句の構文は次の通りです。

SELECT <列名1>, <列名2>,・・・
  FROM <テーブル名>
ORDER BY <並べ替えの基準となる列1>, <並べ替えの基準となる列2>,・・・;

例えば、次のようなshohinテーブルがあったとします。

shohin_meishohin_bunruikakaku
鉛筆事務用品100
ボールペン事務用品100
フライパンキッチン用品1000
キッチン用品1500
帽子衣類1500
Tシャツ衣類1000
靴下衣類300
消しゴム事務用品50
shohinテーブル

このテーブルのkakakuを昇順に並べ替えて取り出したい場合は、次のようなSQL文になります。

SELECT * FROM shohin ORDER BY kakaku ASC;

昇順と降順の指定

先ほどの例ではkakakuの昇順に取り出しました。

ASCとはascending orderの略で昇順を表します。

逆に、降順に並べ替えて取り出したい場合は列名の後ろにDESCを指定します。

DESCdescending orderの略で降順を表します。

ASCやDESCを指定しなかった場合は、昇順扱いになります。

複数のソートキーを指定する

先ほどの例ではkakakuを昇順に並べ替えましたが、kakakuが全く同じのレコードは順番はランダムに表示されます。

この同順位のデータについても細かく並び順を指定したい場合は、もう一つソートキーを追加する必要があります。

ここでは、kakakuが同じ場合にshohin_bunruiの昇順に並べ替える例を紹介します。

ORDER BY句のkakaku ASCの後にshohin_bunruiに対してASCを指定します。

SELECT * FROM shohin ORDER BY kakaku ASC, shohin_bunrui ASC;

実行結果

shohin_meishohin_bunruikakaku
フライパンキッチン用品1000
キッチン用品1500
消しゴム事務用品50
鉛筆事務用品100
ボールペン事務用品100
靴下衣類300
Tシャツ衣類1000
帽子衣類1500
shohinテーブル

複数のソートキーを指定した場合は、左側から優先的に使用され、そのキーで同じ値が存在した場合に右のキーが参照されるというルールです。

ORDER BYの使い方まとめ

解説の内容をまとめます。

  • 検索結果を並べ替えるにはORDER BY句を使う
  • ORDER BY句の列名の後ろにASCキーワードをつけると昇順、DESCキーワードをつけると降順に並べ替える
  • ORDER BY句には複数のソートキーを指定することができる
  • ソートキーを複数指定した場合は左側から優先的に使用される

以上、お疲れ様でした。

コメント

タイトルとURLをコピーしました