カテゴリ: MySQL 更新日: 2026/01/15

MySQLのORDER BYとNULLの並び順をやさしく解説|初心者向けSQL入門

MySQLのORDER BYとNULLの並び順の考え方
MySQLのORDER BYとNULLの並び順の考え方

先生と生徒の会話形式で理解しよう

生徒

「MySQLでORDER BYを使ったら、空欄みたいなデータが一番上に来たり下に来たりして、よく分からなくなりました…」

先生

「それはNULLという特別な値が関係しています。NULLの並び方は、数字や文字とは少し考え方が違うんです。」

生徒

「NULLって、空白とは違うんですか?」

先生

「はい。値が入っていない状態を表す特別な意味があります。名簿に何も書かれていない欄を想像すると分かりやすいですよ。」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQLは、データベースと呼ばれる「大量のデータを整理して保存する箱」に対して指示を出すための言語です。 データベースでは、情報が表の形で保存されています。 例えば、会員名簿、社員一覧、商品リストなどをパソコンの中で管理する仕組みです。

MySQLは、SQLを使って操作できる代表的なデータベースで、初心者の学習から実際のWebサービスまで幅広く使われています。

2. ORDER BYのおさらいと並び順の基本

2. ORDER BYのおさらいと並び順の基本
2. ORDER BYのおさらいと並び順の基本

ORDER BYは、SELECT文で取得したデータを並び替えるための命令です。 年齢順、名前順など、人が見て分かりやすい順番に整えるために使われます。

これまで学んだORDER BYでは、数字や文字の順番を意識してきましたが、 実際のデータベースには「値が入っていないデータ」も存在します。 それがNULLです。

3. NULLとは何かをやさしく理解しよう

3. NULLとは何かをやさしく理解しよう
3. NULLとは何かをやさしく理解しよう

NULL(ヌル)とは、「値が存在しない」という状態を表す特別な値です。 空文字や0とは違い、「まだ決まっていない」「入力されていない」ことを意味します。

紙の名簿で例えると、年齢を書く欄が空白のままになっている状態です。 書き忘れなのか、まだ情報がないのか分からない、という状態を表します。

4. サンプルとなるテーブルを確認しよう

4. サンプルとなるテーブルを確認しよう
4. サンプルとなるテーブルを確認しよう

NULLの並び順を確認するために、ageが未入力のデータを含むusersテーブルを使います。


id | name       | age  | email
---+------------+------+-----------------------
1  | 山田太郎   | 25   | taro@example.com
2  | 佐藤花子   | NULL | hanako@example.com
3  | 鈴木一郎   | 30   | ichiro@example.com
4  | 高橋美咲   | 22   | misaki@example.com
5  | 田中健一   | NULL | ken@example.com

5. ORDER BYでNULLを含めて並び替えるとどうなるか

5. ORDER BYでNULLを含めて並び替えるとどうなるか
5. ORDER BYでNULLを含めて並び替えるとどうなるか

まずは、ageを昇順で並び替えてみましょう。 このとき、NULLがどこに表示されるかがポイントです。


SELECT *
FROM users
ORDER BY age ASC;

id | name       | age  | email
---+------------+------+-----------------------
2  | 佐藤花子   | NULL | hanako@example.com
5  | 田中健一   | NULL | ken@example.com
4  | 高橋美咲   | 22   | misaki@example.com
1  | 山田太郎   | 25   | taro@example.com
3  | 鈴木一郎   | 30   | ichiro@example.com

MySQLでは、昇順の場合、NULLは一番小さいものとして扱われ、先頭に表示されます。

6. 降順にした場合のNULLの扱い

6. 降順にした場合のNULLの扱い
6. 降順にした場合のNULLの扱い

次に、ageを降順で並び替えてみましょう。 昇順とは逆の結果になります。


SELECT *
FROM users
ORDER BY age DESC;

id | name       | age  | email
---+------------+------+-----------------------
3  | 鈴木一郎   | 30   | ichiro@example.com
1  | 山田太郎   | 25   | taro@example.com
4  | 高橋美咲   | 22   | misaki@example.com
2  | 佐藤花子   | NULL | hanako@example.com
5  | 田中健一   | NULL | ken@example.com

降順では、NULLは最後に表示されます。 これは、MySQLがNULLを特別な値として扱っているためです。

7. NULLの並び順を意識することの大切さ

7. NULLの並び順を意識することの大切さ
7. NULLの並び順を意識することの大切さ

NULLを含むデータをORDER BYで並び替えると、 意図しない位置に表示されて驚くことがあります。 特に、一覧画面や管理画面では、NULLが先頭にあると見づらく感じることもあります。

MySQLでは、NULLもデータの一部として扱われるため、 「値がない」という状態をどう表示したいかを考えることが重要です。 これを意識するだけで、SQLの理解が一段深まります。

8. NULLを含むORDER BYを理解するための考え方

8. NULLを含むORDER BYを理解するための考え方
8. NULLを含むORDER BYを理解するための考え方

ORDER BYとNULLの関係を理解するコツは、 「NULLは数字でも文字でもない、特別な状態」と考えることです。

紙の名簿で、空白の行をどう並べるかを想像すると分かりやすくなります。 MySQLはその判断を自動で行っているだけなので、 NULLの性質を知っておけば、並び順に戸惑うことは少なくなります。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方