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

【SQL】現在の値を知らなくてもint型カラムに値を加算する方法(MySQL)

データベース内のint型カラムに対して、現在の値を確認せずに値を加算したい場合があります。そんなときは、UPDATEコマンドとSET句を組み合わせるだけで簡単に実現できます。この記事では、MySQLを使って具体的な手順を解説します。

1. テーブルを作成する

まずはサンプル用のテーブルを作成しましょう。ここでは学生IDとスコアを持つ「DemoTable」を作成します。

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentScore int
);
Query OK, 0 rows affected (0.81 sec)

2. レコードを挿入する

次に、INSERTコマンドを使ってテーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable(StudentScore) values(78);
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable(StudentScore) values(89);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(StudentScore) values(67);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentScore) values(95);
Query OK, 1 row affected (0.25 sec)

3. 現在のレコードを確認する

SELECT文でテーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

以下のような結果が出力されます。

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
|         1 |           78 |
|         2 |           89 |
|         3 |           67 |
|         4 |           95 |
+-----------+--------------+
4 rows in set (0.00 sec)

4. 現在の値を知らずに加算するクエリ

ここが本題です。現在の値を取得しなくても、カラム自身を参照して加算することで値を更新できます。以下のように、SET句で「StudentScore = StudentScore + 21」と記述します。

mysql> update DemoTable
    set StudentScore=StudentScore+21
    where StudentId=3;
Query OK, 1 row affected (0.22 sec)
Rows matched : 1 Changed : 1 Warnings : 0

この例では、StudentIdが3のレコード(元の値:67)に対して21を加算しています。現在の値が何であっても、その値に21が足される仕組みです。

5. 更新後のレコードを確認する

もう一度テーブルの内容を確認してみましょう。

mysql> select *from DemoTable;

実行結果は以下のとおりです。

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
|         1 |           78 |
|         2 |           89 |
|         3 |           88 |
|         4 |           95 |
+-----------+--------------+
4 rows in set (0.00 sec)

まとめ

このように、SET カラム名 = カラム名 + 加算したい値という形式を使えば、SELECTで現在の値を取得しなくても、int型カラムの値に直接加算できます。WHERE句で対象レコードを絞れば、特定の行だけを安全に更新できるため、実務でも頻繁に使われるテクニックです。


  1. MySQLクエリで列にユーザー定義の値を追加する方法

    MySQLでは、UNION ALLを活用することで、既存の列の値に加えて、ユーザーが自由に定義した値をクエリ結果に追加できます。ここでは、ENUM型の列を持つテーブルを例に、その具体的な手順を解説します。 1. サンプルテーブルの作成 まず、ENUM型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1847      (      GameStatus ENUM(PENDING,COMPLETED,CANCELLED)      ); Query OK

  2. MySQLでJSON型カラムにデフォルト値を設定する方法

    MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK,