Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: ลบตัวเลขจากคอลัมน์เฉพาะแถวด้วย UPDATE

การลบ (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 จริง