MySQLでNULLのフィールドを特定の値に一括更新する方法(IS NULL句の使い方)
はじめに
MySQLでは、IS NULL演算子とUPDATE文を組み合わせることで、NULLになっているフィールドだけを特定の値で効率的に更新できます。NULLは「=」や「!=」では比較できないため、必ずIS NULLを使う点がポイントです。
この記事では、実際のサンプルコードを使いながら、NULLのレコードだけを別の値で更新する手順をわかりやすく解説します。
1. テーブルを作成する
まず、テスト用のテーブルを作成しましょう。ここでは学生のスコアを格納する StudentScore カラムを持つテーブルを作成します。
mysql> create table DemoTable
(
StudentScore int
);
Query OK, 0 rows affected (0.47 sec)
2. サンプルデータを挿入する
次に、INSERT文を使って数件のレコードを追加します。意図的にNULLのデータも混ぜて挿入します。
mysql> insert into DemoTable values(89); Query OK, 1 row affected (0.16 sec) mysql> insert into DemoTable values(NULL); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(45); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(NULL); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(56); Query OK, 1 row affected (0.14 sec)
3. 挿入したデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+--------------+ | StudentScore | +--------------+ | 89 | | NULL | | 45 | | NULL | | 56 | +--------------+ 5 rows in set (0.00 sec)
このように、5件のうち2件がNULLになっていることが確認できます。
4. NULLのレコードだけを更新する
ここからが本題です。WHERE句にIS NULLを指定することで、NULLの行だけを対象にUPDATEを実行できます。以下の例では、NULLのスコアを「30」に更新しています。
mysql> update DemoTable set StudentScore=30 where StudentScore IS NULL; Query OK, 2 rows affected (0.34 sec) Rows matched: 2 Changed: 2 Warnings: 0
「Rows matched: 2 Changed: 2」と表示されているように、2件のNULLレコードが正しく更新されました。
5. 更新後のデータを確認する
もう一度SELECT文を実行して、結果を確認してみましょう。
mysql> select *from DemoTable;
実行結果:
+--------------+ | StudentScore | +--------------+ | 89 | | 30 | | 45 | | 30 | | 56 | +--------------+ 5 rows in set (0.00 sec)
元々NULLだった2件のレコードが「30」に置き換わり、それ以外の値(89・45・56)はそのまま維持されていることがわかります。
まとめ
MySQLでNULLのフィールドを特定の値に更新したい場合は、以下の構文を使用します。
UPDATE テーブル名 SET カラム名 = 値 WHERE カラム名 IS NULL;
- = NULL ではなく IS NULL を使うこと(NULLは等価比較できないため)
- 逆にNULL以外を対象にする場合は IS NOT NULL を使用する
- 条件を指定せずにUPDATEを実行すると全レコードが更新されるため、WHERE句の書き忘れに注意
IS NULLを活用すれば、欠損値の補完や初期値の一括設定なども安全かつ簡単に行えます。
-
JavaでMySQLデータベースのレコードを更新する方法【UPDATE文の使い方を実例で解説】
MySQLデータベースのテーブルに格納されたデータを更新するには、UPDATEコマンドを使用します。本記事では、UPDATE文の基本構文から、実際にテーブルを作成し、Java(JDBC)経由でレコードを更新するまでの一連の手順を、サンプルコード付きで詳しく解説します。 UPDATE文の基本構文 MySQLで既存のデータを更新する場合、以下の構文を使用します。 update テーブル名 set カラム名1 = 値1, ....N where 条件; where句で条件を指定しないと、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。 ステップ1:テーブルの作成 まずは更新用のサン
-
MySQLでGROUP BYのように特定の1行だけ更新する方法|ORDER BYとLIMITを活用したUPDATE文の書き方
MySQLでは、UPDATE文の中でGROUP BYを直接使用することができません。しかし、「同じ値を持つ複数のレコードの中から、最初の1行だけを更新したい」というケースは実際の開発でよく発生します。 そんなときに役立つのが、ORDER BYとLIMITを組み合わせたUPDATE文です。この記事では、サンプルテーブルを使いながら、その具体的な手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、従業員情報を格納するテーブル「DemoTable2018」を作成します。テーブルには、自動採番される主キー「EmployeeId」、従業員名「EmployeeName」、給与「Emp