どうもニコイチです。データベースの中から必要な情報を取り出すだけでなく、「並べ替え」を行うことで、より見やすく整理された結果を得ることができます。たとえば価格が安い順に本をリストにしたり、レビュー数が多い順で並べて人気度をチェックしたりと、使い方はさまざま。ここでは、SQLのORDER BY
句を使った並び替えや、複数カラムを指定しての並び替え方法を解説します。
目次
ORDER BY句とは?
基本の構文
SELECT 列1, 列2, ...
FROM テーブル名
ORDER BY カラム名 [ASC | DESC];
ORDER BY
の後に並べ替えの基準となるカラムを指定します。ASC
は昇順(小さい値から大きい値へ、あいうえお順など)、DESC
は降順(大きい値から小さい値へ、Z→A順など)を表します。- 省略した場合はデフォルトで
ASC
扱いになります。
例:昇順に並べ替え
SELECT *
FROM users
ORDER BY age ASC;
users
テーブルのage
カラムを小さい年齢から大きい年齢に並べ替え
並べ替えの実践例(昇順)
課題:レビュー数が少ない順に、本を20冊だけ表示
books
テーブルには書籍情報が入っており、Name
とReviews
の列があります。
SELECT Name, Reviews
FROM books
ORDER BY Reviews ASC
LIMIT 20;
- ORDER BY Reviews ASC でレビュー数が少ない順に並べ替え。
- LIMIT 20 で上位20件を取得。
ASC(昇順)を明示してもしなくても、デフォルトが昇順なので同じ結果が得られます。レビュー数が少ない順に並べたい場合はASCを、多い順(人気順)に並べたい場合はDESCを指定すると良いでしょう。
並べ替えの実践例(降順)
課題:価格が高い順に、本を10冊だけ表示
books
テーブルのName
(書籍名)とPrice
(価格)を参照します。
SELECT Name, Price
FROM books
ORDER BY Price DESC
LIMIT 10;
- ORDER BY Price DESC で価格を高い順に並べ替え。
- LIMIT 10 で上位10件を取得。
DESCを使うときは「高い順」「大きい数値順」「アルファベットZ→A順」など、逆順でソートしたい場合に便利です。
複数カラムによる並べ替え
なぜ複数カラムが必要?
「まずはジャンルごとに並べたい。でもジャンルが同じ本は、さらにレビュー数が少ない順で並べたい」など、複雑なソートを1回のクエリで行うときに、複数カラムで並べ替えを指定できます。
基本の書き方
ORDER BY カラム1 [ASC | DESC], カラム2 [ASC | DESC];
- 左から順に優先度が高い並び替え基準になります。
- たとえば「年齢を降順で並べたあと、同じ年齢の人だけ名前を昇順に」というような使い方ができます。
例1:ジャンル → レビュー数 の順で並べ替え(どちらも昇順)
SELECT Name, Genre, Reviews
FROM books
ORDER BY Genre ASC, Reviews ASC;
- まずは Genre(ジャンル) を昇順(A~Z)でソート。
- 同じジャンル内では、 Reviews(レビュー数) が少ないものから多いものへ並べ替え。
例2:発行年(降順) → レビュー数(昇順) で並べ替え
SELECT Name, Year, Reviews
FROM books
ORDER BY Year DESC, Reviews ASC;
- Year(発行年) を新しいもの(値が大きいほう)から順にソート。
- 同じ発行年の本だけは Reviews が少ない順に並べる。
このように複数カラムを組み合わせると、一度に複雑な並べ替えができて便利です。
まとめ
- ORDER BY句 で並べ替えが可能。
- ASC(昇順)か DESC(降順)を指定できる(指定なしなら昇順)。
- LIMIT を組み合わせることで、並べ替えた結果から先頭○件を表示できる。
- 複数カラム指定 でさらに細かい並べ替えができる(例:
ORDER BY カラムA DESC, カラムB ASC
)。
並べ替えは、レポート作成や画面表示の際によく使う機能です。新着順や価格の安い順など、幅広い用途で活躍しますので、ぜひ色々と試してみてくださいね。
コメント