【試して覚える】SQLite で Select 文入門(Oder by 並べ替え)

プログラミング入門
この記事は約4分で読めます。

これまでに SQLの基本中の基本である select と、2つ以上のテーブルを結合するという方法を解説しました。

今回は select した内容を好きな順番に並べ替える方法について、解説したいと思います。

SQLを試すためのツールは、あらかじめ こちら からダウンロードをお願いします。

並べ替えは Order by 区で指定

並べ替えは Order by に続けて、カラム名をカンマ区切りで列挙し、最後に昇順か降順かを指定します。

order by カラム名1 昇降指定,カラム名2 昇降指定,・・・

昇降指定は、asc と desc を指定することが可能です。

指定方法動作
asc昇順(小さい順)
desc降順(大きい順)

ちなみに、昇降指定(asc or desc)を省略すると、自動的に昇順(asc)を指定したことになります。

ところで、私も未だにそうなのですが、昇順と降順がどっちだったか迷う事があります。

よく階段の上り下りに例えられるのですが、このサイトではエレベータで例えてみました。

エレベータが1階から上に昇る場合、階の番号は1,2,3・・・と言う具合に数値が増えていくと思いますが、これが昇順です。

逆に、エレベータが上の階から1階に降りる場合、8、7、6・・・という具合に数値が減っていきますが、これが降順です。

並べ替えを指定しないと、順番は保証されない

これは重要なことなのですが、データベースに入っているデータの順序は保証されていません。

たとえばCSVを読み込む場合、CSVに記載されている順番で登録すれば、その順番でデータベースに登録はされますので、最初は order by を指定しなくても登録した順番に取り出すことが可能です。

しかし、データの挿入や削除を繰り返すと、その順番が変わってしまいます。

多くのデータベースはデータを削除しても、間を詰める事はしません。

そして、次にデータを挿入した際は、前回削除された位置にデータを登録していきます。

これは、詰めるという作業が非常に重い作業だからです。

したがって、テーブルに登録されているデータの順番は保証されず、万が一取り出したときに並んでいたとしても、それはたまたまだったと考えた方が無難です。

実行してみよう

それでは、いつものツールを使って実験してみましょう。

order by は select 文の最後に追加します。

select * from テーブル名 where 条件式 order by 並替条件

例えば、商品マスタから発売日の降順にデータを取り出す場合は次の様になります。

答えは、次の様になります。

日付の新しい順から並んでいることが分かると思います。

では、複数の条件で並べ替えてみましょう。

発売日の新しい順、単価が小さい順で並べ替えてみましょう。

答えは次の通りです。

赤で囲った部分に着目すると、金額が小さい順(昇順)でソートされていることが分かりますね。

今度は、並べ替え条件はそのままに、商品マスタに売上データをjoin してみます。

結果は以下の様になりました。

では、最後に製品名に LUMIX の文字が含まれているデータだけ抽出するように書き換えてみて下さい。

LUMIXが含まれているかどうかは、 like ‘%LUMIX%’と指定できますので、SQLは次の様になります。

実行すると次のようになります。

select * from ~の後に、join や where が続く場合、order by の順番に注意が必要です。

順番を間違うとエラーになってしまいます。

「order by は最後に記述する」という事を覚えておいて下さい。

まとめ

今回は order by による並べ替え(ソート)の指定方法について解説しました。

select文の後に join や where が続く場合、order by は一番最後に指定する必要がありますので、その点だけご注意下さい。

次は、グルーピングについて解説する予定です。

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