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

MySQLでフィールドの値が0より大きい場合に1を引く方法

MySQLで値が0より大きい場合のみ1を減算する方法

MySQLでは、UPDATE文とCASE式を組み合わせることで、「フィールドの値が0より大きい場合にだけ1を引く」という条件付きの更新を簡単に実現できます。値が0の場合はそのまま維持されます。

以下、実際の手順をサンプル付きで解説します。

1. サンプルテーブルを作成する

まず、テスト用のテーブルを作成します。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value int
);
Query OK, 0 rows affected (1.44 sec)

2. レコードを挿入する

INSERTコマンドを使って、テーブルにデータを登録します。

mysql> insert into DemoTable(Value) values(100);
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable(Value) values(0);
Query OK, 1 row affected (4.16 sec)
mysql> insert into DemoTable(Value) values(104);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Value) values(0);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Value) values(5);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Value) values(10);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(Value) values(0);
Query OK, 1 row affected (0.18 sec)

3. テーブルの内容を確認する

SELECTコマンドで現在のレコードを表示してみましょう。

mysql> select *from DemoTable;

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

+----+-------+
| Id | Value |
+----+-------+
| 1  | 100   |
| 2  | 0     |
| 3  | 104   |
| 4  | 0     |
| 5  | 5     |
| 6  | 10    |
| 7  | 0     |
+----+-------+
7 rows in set (0.00 sec)

4. CASE式を使って条件付きで減算する

ここがポイントです。CASE WHENを使い、「Valueが0より大きければ1を引き、そうでなければ0(そのまま)」という条件を設定してUPDATEを実行します。

mysql> update DemoTable set Value=CASE WHEN Value > 0 THEN Value-1 ELSE 0 END;
Query OK, 4 rows affected (0.25 sec)
Rows matched: 7 Changed: 4 Warnings: 0

実行結果を見ると、7行中4行(値が0より大きかった行)だけが更新されていることがわかります。

5. 更新後のテーブルを確認する

もう一度SELECTコマンドでレコードを確認しましょう。

mysql> select *from DemoTable;

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

+----+-------+
| Id | Value |
+----+-------+
| 1  | 99    |
| 2  | 0     |
| 3  | 103   |
| 4  | 0     |
| 5  | 4     |
| 6  | 9     |
| 7  | 0     |
+----+-------+
7 rows in set (0.00 sec)

まとめ

このように、UPDATE文の中でCASE式を使用することで、特定の条件を満たす行だけを柔軟に更新できます。WHEN Value > 0 THEN Value-1 ELSE 0 の部分を変更すれば、「一定数以上なら減算する」「負の値にならないようにする」など、さまざまなビジネスロジックにも応用可能です。在庫管理やカウンター処理などでぜひ活用してください。

  1. MySQLで他のカラムの値から新しいカラムの値を導出する方法

    MySQLではユーザー定義変数(ユーザー変数)を活用することで、既存のカラムの値をもとに別のカラムの値を計算・導出できます。本記事では、累積和(累積合計)を求める具体例を通して、その方法をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1868 ( Value int ); Query OK, 0 rows affected (0.00 sec)レコードの挿入insertコマンドを使って、テーブルにデータを挿入します。mysql> insert into DemoTable1

  2. MySQLで特定の値だけを検索結果の最後に並び替える方法

    MySQLで特定の値を最後に並び替える方法 データベースを扱っていると、「不明」や「未設定」を意味する特定の値だけを、検索結果の一番最後に表示したいケースがあります。MySQLでは、ORDER BY句に比較式を組み合わせることで、このような並べ替えを簡単に実現できます。ここでは、テーブル作成から動作確認まで、サンプルコードとともに手順を解説します。 ステップ1:サンプルテーブルを作成する まず、氏名データを格納するためのテーブルを作成します。 mysql> create table demo57-> (-> id int not null auto_increment pr