MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのIFステートメントを使ってテーブル内の複数の値を更新する方法

MySQLでは、IF()関数をUPDATE文と組み合わせることで、条件に応じた値の更新を1つのクエリで柔軟に実行できます。本記事では、IFステートメントを使用してテーブル内の複数の値を条件付きで更新する方法を、実際のサンプルコードとともに解説します。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable716 (
    Id varchar(100),
    Value1 int,
    Value2 int,
    Value3 int
);
Query OK, 0 rows affected (0.65 sec)

テストデータの挿入

次に、insertコマンドを使用して、テーブルにレコードを挿入します。

mysql> insert into DemoTable716 values('100',45,86,79);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable716 values('101',67,67,99);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable716 values('102',77,57,98);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable716 values('103',45,67,92);
Query OK, 1 row affected (0.16 sec)

挿入したデータの確認

selectステートメントを使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable716;

実行すると、以下のような出力が得られます。

+------+--------+--------+--------+
| Id   | Value1 | Value2 | Value3 |
+------+--------+--------+--------+
| 100  | 45     | 86     | 79     |
| 101  | 67     | 67     | 99     |
| 102  | 77     | 57     | 98     |
| 103  | 45     | 67     | 92     |
+------+--------+--------+--------+
4 rows in set (0.00 sec)

IF()関数を使った複数の値の更新

それでは、IF()関数を使用してテーブル内の値を条件付きで更新するクエリを見ていきましょう。以下の例では、Idが「101」のレコードに対して、Value1またはValue2が67である場合にValue3を67に更新し、条件を満たさない場合はNULLを設定しています。

mysql> update DemoTable716
   set Value3=if(Value1=67 OR Value2=67,67,NULL) where Id='101';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1 Changed: 1 Warnings: 0

更新後のデータ確認

更新後のテーブルのレコードを、もう一度確認してみましょう。

mysql> select *from DemoTable716;

実行すると、以下のような結果が出力されます。

+------+--------+--------+--------+
| Id   | Value1 | Value2 | Value3 |
+------+--------+--------+--------+
| 100  | 45     | 86     | 79     |
| 101  | 67     | 67     | 67     |
| 102  | 77     | 57     | 98     |
| 103  | 45     | 67     | 92     |
+------+--------+--------+--------+
4 rows in set (0.00 sec)

ご覧のとおり、Id「101」のレコードのValue3が「99」から「67」に更新されました。これは、Value1とValue2がどちらも67という条件を満たしていたためです。

まとめ

IF()関数をUPDATE文と組み合わせることで、「条件を満たす場合は特定の値を設定し、満たさない場合は別の値(NULLなど)を設定する」といった柔軟な更新処理を、シンプルな1文で実現できます。条件分岐を伴う一括更新を行いたい場合に非常に便利なテクニックなので、ぜひ活用してみてください。

  1. JavaのPreparedStatementを使ってMySQLテーブルを更新する方法

    JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a

  2. MySQLでテーブル内のNULLまたはNULL以外のフィールドを一括更新する方法

    はじめにMySQLでは、IS NULL 演算子や IS NOT NULL 演算子を WHERE 句と組み合わせることで、テーブル内の NULL 値または NULL 以外の値が含まれるレコードを条件として、複数のフィールドをまとめて更新できます。本記事では、具体的なサンプルを使ってその手順をわかりやすく解説します。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0