MySQLで列の現在の値に数値を加算する方法!UPDATE文の使い方を実例で解説
MySQLで列の現在の値に数値を加算したい場合は、UPDATE文を使用します。ゲームのスコアにボーナス点を追加するなど、既存の値を基準に更新を行いたい場面で非常に便利なテクニックです。
基本構文
現在の値への加算は、以下の構文で実現できます。
update yourTableName set yourColumnName = yourColumnName + yourIntegerValue where <yourCondition>;
「列名 = 列名 + 加算する値」という式をSET句に記述することで、WHERE句の条件に一致した行の現在の値に対して、指定した数値が加算されます。なお、WHERE句を省略するとテーブル内の全行が更新対象となるため、注意が必要です。
サンプルテーブルの作成
それでは、実際に動作を確認してみましょう。まずはゲームのIDとスコアを管理するテーブルを作成します。
mysql> create table addANumberToCurrentValueDemo
-> (
-> Game_Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Game_Score int
-> );
Query OK, 0 rows affected (0.67 sec)
レコードの挿入
続いて、INSERTコマンドを使ってテーブルにレコードを挿入していきます。
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(1090);
Query OK, 1 row affected (0.30 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(204);
Query OK, 1 row affected (0.12 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(510);
Query OK, 1 row affected (0.14 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(7890);
Query OK, 1 row affected (0.14 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(8999);
Query OK, 1 row affected (0.14 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(1093859);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(157596);
Query OK, 1 row affected (0.11 sec)
mysql> insert into addANumberToCurrentValueDemo(Game_Score) values(4857567);
Query OK, 1 row affected (0.28 sec)
登録済みデータの確認
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from addANumberToCurrentValueDemo;
実行結果は以下の通りです。
+---------+------------+
| Game_Id | Game_Score |
+---------+------------+
| 1 | 1090 |
| 2 | 204 |
| 3 | 510 |
| 4 | 7890 |
| 5 | 8999 |
| 6 | 1093859 |
| 7 | 157596 |
| 8 | 4857567 |
+---------+------------+
8 rows in set (0.05 sec)
現在の値に数値を加算するクエリ
ここからが本題です。Game_Idが5の行にあるGame_Score(現在値:8999)に対して、11を加算してみます。
mysql> update addANumberToCurrentValueDemo set Game_Score = Game_Score + 11 where Game_Id = 5;
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0
更新結果の確認
もう一度SELECT文でテーブルの内容を確認し、Game_Scoreが8999から9010へ正しく更新されているかチェックしましょう。
mysql> select *from addANumberToCurrentValueDemo;
実行結果は以下の通りです。Game_Idが5の行だけが更新され、その他の行はそのまま維持されていることが分かります。
+---------+------------+
| Game_Id | Game_Score |
+---------+------------+
| 1 | 1090 |
| 2 | 204 |
| 3 | 510 |
| 4 | 7890 |
| 5 | 9010 |
| 6 | 1093859 |
| 7 | 157596 |
| 8 | 4857567 |
+---------+------------+
8 rows in set (0.00 sec)
まとめ
MySQLで現在の値に数値を加算するには、UPDATE文で「列名 = 列名 + 加算値」のように指定します。同じ要領で「-」「*」「/」などの演算子も使用できるため、減算や乗算などの処理にも応用できます。また、WHERE句の条件を調整すれば、複数の行を同時に一括更新することも可能です。
-
MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】
はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol
-
MySQLで複数のデータを一度に挿入する方法を解説
MySQLでは、INSERT文を複数回実行しなくても、1つのINSERT文で複数行のデータを同時にテーブルへ挿入できます。この方法を使うと、コードが簡潔になるだけでなく、データベースとの通信回数が減るため、大量のデータを挿入する際のパフォーマンス向上にもつながります。 複数行を挿入するための基本構文 複数のレコードを一度に挿入するには、VALUES句の後に値のセットをカンマで区切って並べます。構文は以下のとおりです。 INSERT INTO テーブル名 VALUES(値1, 値2, .....N), (値1, 値2, .....N), (値1, 値2, .....N), (値1, 値2, ..