ใช้คำสั่ง CASE ร่วมกับ UPDATE เพื่อลดค่าลง 1 เฉพาะแถวที่มีค่ามากกว่า 0
สร้างตารางและเพิ่มข้อมูลตัวอย่าง
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value int
);
Query OK, 0 rows affected (1.44 sec)
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)
ข้อมูลก่อนอัปเดต
mysql> select * from DemoTable;
+----+-------+ | Id | Value | +----+-------+ | 1 | 100 | | 2 | 0 | | 3 | 104 | | 4 | 0 | | 5 | 5 | | 6 | 10 | | 7 | 0 | +----+-------+
คำสั่ง UPDATE พร้อมเงื่อนไข CASE
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 | +----+-------+
คำสั่งนี้จะลดค่าลง 1 สำหรับแถวที่ Value > 0 และเก็บค่า 0 ไว้เหมือนเดิมสำหรับแถวที่มีค่า 0 หรือติดลบ