การลบ (Subtract) ค่าตัวเลขจากคอลัมน์เฉพาะแถวที่ตรงเงื่อนไข
การอัปเดตค่าตัวเลขใน MySQL ทำได้โดยตรงในคำสั่ง UPDATE ... SET col = col - value WHERE condition
สร้างตารางและข้อมูล
mysql> create table DemoTable1372 (
-> Value int
-> );
Query OK, 0 rows affected (0.77 sec)
mysql> insert into DemoTable1372 values(500);
mysql> insert into DemoTable1372 values(100);
mysql> insert into DemoTable1372 values(900);
mysql> insert into DemoTable1372 values(1000);
ข้อมูลก่อนอัปเดต
+-------+ | Value | +-------+ | 500 | | 100 | | 900 | | 1000 | +-------+
คำสั่ง UPDATE ลบ 50 จากแถวที่ Value = 900
mysql> update DemoTable1372 set Value = Value - 50 where Value = 900; Query OK, 1 row affected (0.52 sec) Rows matched: 1 Changed: 1 Warnings: 0
ข้อมูลหลังอัปเดต
+-------+ | Value | +-------+ | 500 | | 100 | | 850 | | 1000 | +-------+
รูปแบบทั่วไป
UPDATE table_name
SET numeric_column = numeric_column - subtract_value
WHERE condition;
การดำเนินการคณิตศาสตร์อื่นๆ
- บวก:
SET col = col + 10 - คูณ:
SET col = col * 1.1(เพิ่ม 10%) - หาร:
SET col = col / 2 - โมดูล로:
SET col = col % 10
การอัปเดตหลายคอลัมน์พร้อมกัน
UPDATE DemoTable1372
SET Value = Value - 50,
AnotherCol = AnotherCol + 10
WHERE Value = 900;
ข้อควรระวัง
- ใช้
WHEREเสมอ มิฉะนั้นจะอัปเดตทุกแถว - ข้อมูลชนิด integer อาจ overflow (BIGINT ปลอดภัยกว่า)
- การหาร integer ใน MySQL ให้ผลลัพธ์เป็นทศนิยม (ไม่ปัดทิ้ง)
- ควรทดสอบด้วย
SELECT ... WHEREก่อน UPDATE จริง