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」とすることで同じ要領でインクリメントできます。
スコア管理や在庫数の減算など、実務でもよく使われる処理なので、ぜひ覚えておきましょう。
-
MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説
MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query
-
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