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

MySQLのUPDATE文で1つのクエリを使って複数のレコードを更新する方法

MySQLでは、UPDATEステートメントを使うことで、1つのクエリで複数のカラムや複数のレコードの値をまとめて更新できます。この記事では、実際にサンプルテーブルを作成し、UPDATE文でデータを更新する具体的な手順を解説します。

サンプルテーブルの作成

まず、テーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Marks1 int,
    -> Marks2 int,
    -> Marks3 int
    -> );
Query OK, 0 rows affected (0.60 sec)

レコードの挿入

続いて、INSERTコマンドを使用して、テーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(45,67,34);
Query OK, 1 row affected (0.33 sec)
mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(89,87,56);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Marks1,Marks2,Marks3) values(87,56,54);
Query OK, 1 row affected (0.31 sec)

挿入したレコードの確認

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

mysql> select *from DemoTable;

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

+----+--------+--------+--------+
| Id | Marks1 | Marks2 | Marks3 |
+----+--------+--------+--------+
|  1 |     45 |     67 |     34 |
|  2 |     89 |     87 |     56 |
|  3 |     87 |     56 |     54 |
+----+--------+--------+--------+
3 rows in set (0.00 sec)

UPDATE文で複数の値を同時に更新する

それでは、1つのUPDATEクエリで複数のカラムの値を同時に更新してみましょう。SET句に「カラム名=値」をカンマ区切りで並べることで、複数の列を一度に更新できます。

mysql> update DemoTable
    -> set Marks1=98,Marks2=96,Marks3=99
    -> where Id=1;
Query OK, 1 row affected (0.18 sec)
Rows matched: 1 Changed: 1 Warnings: 0

上記の例では、WHERE句で「Id=1」のレコードを指定し、Marks1・Marks2・Marks3の3つのカラムを同時に更新しています。

更新結果の確認

もう一度SELECTステートメントを実行して、テーブルの内容を確認してみましょう。

mysql> select *from DemoTable;

実行すると、次のようにId=1のレコードだけが更新されていることがわかります。

+----+--------+--------+--------+
| Id | Marks1 | Marks2 | Marks3 |
+----+--------+--------+--------+
|  1 |     98 |     96 |     99 |
|  2 |     89 |     87 |     56 |
|  3 |     87 |     56 |     54 |
+----+--------+--------+--------+
3 rows in set (0.00 sec)

まとめ

MySQLのUPDATE文では、SET句にカンマ区切りで複数の「カラム名=値」を指定することで、1つのクエリで複数のカラムを同時に更新できます。また、WHERE句の条件を工夫すれば、該当する複数のレコードを一括して更新することも可能です。ただし、条件の指定を誤ると意図しないレコードまで更新されてしまう恐れがあるため、WHERE句の内容は十分に確認してから実行するようにしましょう。

  1. MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法

    MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)

  2. MySQLで複数のレコードをすばやく一括挿入するクエリの書き方

    MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル