【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句で対象レコードを絞れば、特定の行だけを安全に更新できるため、実務でも頻繁に使われるテクニックです。
-
MySQLクエリで列にユーザー定義の値を追加する方法
MySQLでは、UNION ALLを活用することで、既存の列の値に加えて、ユーザーが自由に定義した値をクエリ結果に追加できます。ここでは、ENUM型の列を持つテーブルを例に、その具体的な手順を解説します。 1. サンプルテーブルの作成 まず、ENUM型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1847 ( GameStatus ENUM(PENDING,COMPLETED,CANCELLED) ); Query OK
-
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,