如果 MySQL 中的欄位值 > 0,如何減 1?


你可以為此使用包含 UPDATE 命令的 CASE 語句。讓我們首先建立一個表 −

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

使用 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)

使用 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)

現在,如果欄位值大於 0,則使用該條件設定減法條件,如果欄位值 > 0,則保持不變 −

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

讓我們再次檢查表記錄 −

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)

更新於: 2019 年 7 月 30 日

285 次瀏覽

開啟您的職業生涯

完成課程認證

開始學習
廣告
© . All rights reserved.