MySQLで既存の値に数値を加算してフィールドを更新する方法
MySQLで既存の値に値を追加してフィールドを更新するには?
MySQLでは、UPDATE文とSET句を組み合わせることで、既存の値に新しい値を加算しながらフィールドを更新できます。カウンター値やスコアなど、現在の値をもとに増減させたい場合に非常に便利なテクニックです。
基本構文
既存の値に整数を加算する場合、基本的な構文は以下のとおりです。
UPDATE テーブル名 SET カラム名 = カラム名 + 加算する整数 WHERE 条件;
ポイントは、SET句の右辺に同じカラム名を指定することです。これにより「現在の値 + 加算値」が計算され、その結果で上書きされます。
サンプルテーブルの作成
それでは、実際に動作を確認してみましょう。まずはテスト用のテーブルを作成します。
mysql> create table addingValueToExisting
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(30),
-> GameScore int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.58 sec)
このテーブルは、プレイヤー名(Name)とゲームスコア(GameScore)を管理するシンプルな構造です。
レコードの挿入
次に、INSERT文を使ってサンプルデータを挿入します。
mysql> insert into addingValueToExisting(Name,GameScore) values('John',89);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Mike',56);
Query OK, 1 row affected (0.28 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Sam',99);
Query OK, 1 row affected (0.18 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Carol',100);
Query OK, 1 row affected (0.17 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('David',67);
Query OK, 1 row affected (0.25 sec)
mysql> insert into addingValueToExisting(Name,GameScore) values('Bob',78);
Query OK, 1 row affected (0.14 sec)データの確認
SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。
mysql> select * from addingValueToExisting;
実行結果は以下のとおりです。
+----+-------+-----------+
| Id | Name | GameScore |
+----+-------+-----------+
| 1 | John | 89 |
| 2 | Mike | 56 |
| 3 | Sam | 99 |
| 4 | Carol | 100 |
| 5 | David | 67 |
| 6 | Bob | 78 |
+----+-------+-----------+
6 rows in set (0.00 sec)
UPDATE文で値を加算する
ここからが本題です。Id=4(Carol)のスコア100に対して10を加算し、110に更新してみます。
mysql> update addingValueToExisting set GameScore = GameScore+10 where Id = 4;
Query OK, 1 row affected (0.23 sec)
Rows matched - 1 Changed - 1 Warnings - 0
WHERE句で対象レコードを絞り込むことで、特定の行だけを安全に更新できます。
更新結果の確認
該当レコードが正しく更新されたか、再度SELECT文で確認します。
mysql> select * from addingValueToExisting where Id = 4;
実行結果は以下のとおりです。
+----+-------+-----------+
| Id | Name | GameScore |
+----+-------+-----------+
| 4 | Carol | 110 |
+----+-------+-----------+
1 row in set (0.00 sec)
出力結果を見ると、元のスコア100に10が加算され、110に更新されていることがわかります。
まとめ
MySQLで既存の値に値を追加して更新するには、「SET カラム名 = カラム名 + 加算値」という形式のUPDATE文を使用します。減算したい場合は「-」に置き換えるだけでOKです。また、WHERE句を忘れると全レコードが更新されてしまうため、実行前には必ず条件指定を確認しましょう。この手法は、在庫数の増減やアクセスカウンター、ポイント加算など、さまざまな場面で活用できます。
-
MySQLでNULLのフィールドを特定の値に一括更新する方法(IS NULL句の使い方)
はじめに MySQLでは、IS NULL演算子とUPDATE文を組み合わせることで、NULLになっているフィールドだけを特定の値で効率的に更新できます。NULLは「=」や「!=」では比較できないため、必ずIS NULLを使う点がポイントです。 この記事では、実際のサンプルコードを使いながら、NULLのレコードだけを別の値で更新する手順をわかりやすく解説します。 1. テーブルを作成する まず、テスト用のテーブルを作成しましょう。ここでは学生のスコアを格納する StudentScore カラムを持つテーブルを作成します。 mysql> create table DemoTable (
-
MySQLで特定のフィールドの値を入れ替える(スワップする)方法
MySQLで特定のフィールドの値を入れ替える方法MySQLでは、UPDATE文とユーザー定義変数を組み合わせることで、特定のレコードの2つのカラムの値を簡単に入れ替えることができます。この記事では、実際のサンプルコードと実行結果を使って、手順をわかりやすく解説します。1. テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Number1 in