本記事では、SQLのORDER BYについて解説します。
前回の記事ではAND演算子やOR演算子の使い方を解説しました。
ORDER BYはSQLの中でもややこしい分類に入ります。
そこで今回はORDER BYの使い方を1つずつ丁寧に解説していきましょう。
SQLのORDER BYとは?
「ORDER BY」は日本語で「〜順に並べる」という意味になります。
ORDER BYは取得したデータを並び替えるためのものです。
ORDER BYの後にカラム名を指定することで、そのカラムを基準にレコードを並び替えることができます。
たとえば、データを番号順に並べ替えたり、名前のアルファベット順に並べ替えたりできます。
このように、取得したデータを並び替えるときは、ORDER BYが必要なのです。
SQLのORDER BYの使い方
それではORDER BYの具体的な使い方をみていきましょう。
次の項目に従って解説していきます。
- 昇順に並べる
- 降順に並べる
- 複数の要素で並べ替える
- ORDER BYとWHEREを組み合わせる
なお、今回は第1回目の記事で作成したテーブルを使って解説します。第1回目の記事で演習用のテーブルを作っていない方は、【SQL入門編1】初心者必見!SQLのクエリの書き方を学ぼうを読んで予め作成してくださいね。
昇順に並べる
ORBER BYを使ってデータを昇順に並べ替える方法を解説します。
昇順とは「1、2、3、4……」のように順番に並んでいる状態のことです。
○コード例
SELECT name,age FROM TEST.Student ORDER BY age ASC;
○実行結果
まずORBER BYの後にどのカラムを基準に並び替えたいか、カラム名を指定します。
今回はageカラムを指定しているので、ageカラムのデータを基準に並べ替えています。
昇順に並べ替える場合は、その後に「ASC」と記述してください。
「ASC」と指定することで、昇順に並べ替えることが可能です。
もう1つ例をみておきましょう。
○コード例
SELECT name,birthday FROM TEST.Student ORDER BY birthday ASC;
○実行結果
先程は数値データを基準に並べ替えましたが、数値だけでなく日付データを使って並べ替えることも可能です。
上記の例ではbirthdayを基準にデータを並べ替えています。
実行結果をみて分かる通り、誕生日順にデータが並んでいますね。
降順に並べる
つづいて、ORDER BYを使って降順に並べ替える方法をみていきましょう。
降順とは「4、3、2、1……」のように逆順に並んでいる状態のことです。
○コード例
SELECT name,age FROM TEST.Student ORDER BY age DESC;
○実行結果
今回もORDER BYを使ってageを基準に並べ替えています。
後ろに「DESC」を付けることで、データを降順に並べ替えることが可能です。
- ASC:データを昇順に並べ替える
- DESC:データを降順に並べ替える
SQLではこのようなルールとなっていますので、覚えて使えるようにしましょう。
複数の要素で並べ替える
ORDER BYに複数のカラム名を指定することで、複数の要素で並べ替えることも可能です。
○コード例
SELECT age,id FROM TEST.Student ORDER BY age,id ASC;
○実行結果
上記のコードは、ageカラムとidカラムの2つを指定していますね。
こうすることで、ageカラムとidカラムの2つの基準に並べ替えることが可能です。
ageを基準にまずデータを昇順に並べ替え、その後にidを基準に並べ替えています。
このようにorder byに複数のカラムを指定することも可能です。
ORDER BYとWHEREを組み合わせる
最後にORDER BYとWHEREを組み合わせるやり方をみていきましょう。
WHEREを使うことで、特定の条件に合致する場合のみ取得ができます。
WHEREとORDER BYを組み合わせることで、特定条件に合致する場合のみ取得した後、それらのデータを並び替えることが可能です。
○コード例
SELECT name,age FROM TEST.Student WHERE age>=10 ORDER BY age ASC;
○実行結果
上記の例ではWHERE句によってageが10より大きいものをまず抽出しています。
その後にORDER BYによって、ageを基準に昇順に並び替えています。
このようにWHERE句とORDER BYを一緒に使うことも可能です。
もう1つ例をみていきましょう。
○コード例
SELECT name,id,age,gender FROM TEST.Student WHERE gender="女" ORDER BY age,id ASC;
○実行結果
上記の例では、WHERE句によってgenderが「女」であるものを抽出しています。
その後にORDER BYによって、 ageとidを基準に昇順に並び替えています。
まとめ
本記事では、ORDER BYの使い方について解説しました。
ORDER BYによって、レコードを昇順や降順に並び替えることが可能なのが、お分かり頂けたかと思います。
データを並び替えるなら、SQLでなくてもPHPやPython側でやることも可能なのですが、SQL側でやった方が効率的です。
ORDER BYの使い方をぜひ覚えてくださいね。
次回は、LIMITを使って取得するレコード数を制限する方法をみていきます。