PostgreSQLのORDER BYを完全解説|初心者でもわかる並び替えの基本と使い方
生徒
「PostgreSQLでデータを表示するとき、順番がバラバラで見にくいんですが、並び替える方法はありますか?」
先生
「ありますよ。それがORDER BYです。名簿を年齢順や名前順に並べ直すようなイメージです。」
生徒
「パソコン操作が苦手でも使えますか?」
先生
「大丈夫です。昇順や降順といった考え方も、日常生活の並び替えと同じなので、順番に説明します。」
1. SQLとは何か?
SQLは、PostgreSQLなどのデータベースに保存されている情報を操作するための言語です。データベースは、大量の情報を表の形で整理して保管する場所で、SQLはその表に対して「見せて」「追加して」「直して」「消して」と指示を出す役割を持っています。
SELECT文は、表の中身を表示する命令で、その表示順を整えるために使うのがORDER BYです。
2. ORDER BYの役割をやさしく理解しよう
ORDER BYは、取得したデータをどの順番で並べるかを指定するための句です。例えば、年齢が小さい順、名前の五十音順、新しい順など、見やすい順番に整えることができます。
紙の名簿を机の上に広げて、年齢順に並び替える作業を想像すると、ORDER BYの役割が分かりやすくなります。
3. サンプルテーブルを確認しよう
ここでは、usersテーブルを使って説明します。SQLを実行する前の状態は次の通りです。
id | name | age | email
---+------------+-----+----------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 18 | jiro@example.com
5 | 伊藤美咲 | 22 | misaki@example.com
この状態では、データの並び順に特別な意味はなく、登録された順番で表示されています。
4. ORDER BYで昇順に並び替える方法
昇順とは、小さいものから大きいものへ並べる順番です。年齢を若い順に並び替えたい場合、ORDER BYを次のように使います。
SELECT *
FROM users
ORDER BY age;
実行結果は次のようになります。
id | name | age | email
---+------------+-----+----------------------
4 | 高橋次郎 | 18 | jiro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
5 | 伊藤美咲 | 22 | misaki@example.com
1 | 山田太郎 | 25 | taro@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
ORDER BYの後に列名を書くと、その列を基準に自動で昇順に並び替えられます。
5. 降順で並び替える方法(DESC)
降順は、大きいものから小さいものへ並べる順番です。年齢が高い順に表示したい場合は、DESCを指定します。
SELECT *
FROM users
ORDER BY age DESC;
id | name | age | email
---+------------+-----+----------------------
3 | 鈴木一郎 | 30 | ichiro@example.com
1 | 山田太郎 | 25 | taro@example.com
5 | 伊藤美咲 | 22 | misaki@example.com
2 | 佐藤花子 | 19 | hanako@example.com
4 | 高橋次郎 | 18 | jiro@example.com
DESCは「逆の順番」と覚えると分かりやすいです。
6. 文字列をORDER BYで並び替える
ORDER BYは数字だけでなく、名前などの文字列にも使えます。名前を五十音順のような感覚で並べたい場合は、次のように書きます。
SELECT *
FROM users
ORDER BY name;
文字列の場合も、基本は昇順で並び替えられます。名簿をあいうえお順に並べるイメージです。
7. 複数の条件で並び替える方法
ORDER BYでは、複数の列を使って並び替えることもできます。例えば、年齢順で並べて、同じ年齢の人は名前順にしたい場合です。
SELECT *
FROM users
ORDER BY age, name;
まず年齢で並び替え、その中で名前順に整理されます。これは、名簿を二段階で整理するイメージと同じです。
8. ORDER BYを使うときの注意点
ORDER BYは表示順を変えるだけで、データそのものの保存順を変更するわけではありません。そのため、次に同じSELECT文を実行したときも、ORDER BYを書かなければ元の順番に戻ります。
また、大量のデータを並び替える場合は処理に時間がかかることがあります。必要なときだけORDER BYを使う意識も大切です。