カテゴリ: 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
MySQL
【MySQL入門】LIMITとは何か?SELECT文で取得件数を制限する方法を初心者向けに徹底解説
New2
PostgreSQL
PostgreSQLのMAX・MIN完全解説|集約関数とGROUP BYで最大値・最小値を抽出する方法
New3
MySQL
MySQLのORDER BYで文字列を並び替える方法と注意点を徹底解説|SQL初心者向け完全ガイド
New4
PostgreSQL
PostgreSQLのSUM・AVG完全解説|集約関数とGROUP BYの計算時の注意点を初心者向けにやさしく説明
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLでスキーマを分割するメリット
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのORDER BYの基本(昇順・降順)
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLでよく使うデータ型一覧(文字列・数値・日付)