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

MySQLで行の値を1つ減らす方法|UPDATE文を使ったデクリメント処理を解説

MySQLでは、UPDATE文を使うことで、特定の行の値を1つ増やしたり減らしたり(インクリメント・デクリメント)することができます。この記事では、行の値を1つ減らす具体的な手順を、サンプルコードとともにわかりやすく解説します。

UPDATE文で値を減らす基本構文

行の値を1つ減らすには、UPDATE文で対象カラムに対して「-1」を指定します。基本構文は以下の通りです。

UPDATE テーブル名
SET カラム名 = カラム名 - 1
WHERE 条件;

WHERE句で条件を指定することで、特定の行だけを更新できます。条件を指定しない場合は、テーブル内のすべての行が更新されるので注意してください。

サンプルテーブルの作成

まずは、値を減らす動作を確認するためのテーブルを作成しましょう。ここでは「UserId」と「UserScores」という2つのカラムを持つテーブルを作成します。

mysql> create table IncrementAndDecrementValue
    -> (
    -> UserId int,
    -> UserScores int
    -> );
Query OK, 0 rows affected (0.60 sec)

テストデータの挿入

次に、INSERT文を使ってサンプルデータを3件登録します。

mysql> insert into IncrementAndDecrementValue values(101,20000);
Query OK, 1 row affected (0.13 sec)

mysql> insert into IncrementAndDecrementValue values(102,30000);
Query OK, 1 row affected (0.20 sec)

mysql> insert into IncrementAndDecrementValue values(103,40000);
Query OK, 1 row affected (0.11 sec)

登録データの確認

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認します。

mysql> select *from IncrementAndDecrementValue;

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

+--------+------------+
| UserId | UserScores |
+--------+------------+
|    101 | 20000      |
|    102 | 30000      |
|    103 | 40000      |
+--------+------------+
3 rows in set (0.00 sec)

UserScoresの値を1つ減らすUPDATE文

ここからが本題です。WHERE句で「UserId = 103」を指定し、該当する行のUserScoresの値を1つ減らしてみましょう。

mysql> update IncrementAndDecrementValue set UserScores = UserScores-1 where UserId = 103;
Query OK, 1 row affected (0.41 sec)
Rows matched: 1 Changed: 1 Warnings: 0

「Changed: 1」と表示されていることから、1行が正常に更新されたことがわかります。

更新結果の確認

再度SELECT文を実行して、値が正しく減算されているか確認します。

mysql> select *from IncrementAndDecrementValue;

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

+--------+------------+
| UserId | UserScores |
+--------+------------+
|    101 | 20000      |
|    102 | 30000      |
|    103 | 39999      |
+--------+------------+
3 rows in set (0.00 sec)

UserIdが「103」の行のUserScoresが「40000」から「39999」に減っていることが確認できます。これで、行の値を1つ減らす処理は成功です。

まとめ

  • MySQLで行の値を1つ減らすには、UPDATE文で「SET カラム名 = カラム名 - 1」と指定します。
  • WHERE句で条件を指定すれば、特定の行だけを対象に更新できます。
  • 逆に値を1つ増やしたい場合は、「カラム名 + 1」とすることで同じ要領でインクリメントできます。

スコア管理や在庫数の減算など、実務でもよく使われる処理なので、ぜひ覚えておきましょう。

  1. MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説

    MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query

  2. MySQLでN番目に大きい値を取得するクエリの書き方

    MySQLでは、ORDER BY句とLIMIT句を組み合わせることで、テーブルからN番目に大きい値を簡単に取得できます。この記事では、実際のサンプルを使ってその手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、数値を格納するためのシンプルなテーブルを作成します。mysql> create table DemoTable-> (-> Value int-> );Query OK, 0 rows affected (0.59 sec)2. テーブルにデータを挿入するINSERTコマンドを使って、いくつかのレコードを追加します。mysql> inser