Cú pháp UPDATE an toàn
Sử dụng điều kiện WHERE để chỉ giảm giá trị khi nó lớn hơn 0:
UPDATE ten_bang SET ten_cot = ten_cot - 1 WHERE ten_cot > 0;
Ví dụ minh họa
1. Tạo bảng
mysql> CREATE TABLE DecrementDemo ( -> DecrementValue INT -> ); Query OK, 0 rows affected (0.62 sec)
2. Chèn dữ liệu
mysql> INSERT INTO DecrementDemo VALUES(15),(14),(13),(12),(11),(10); Query OK, 6 rows affected (0.18 sec) Records: 6 Duplicates: 0 Warnings: 0
3. Dữ liệu ban đầu
mysql> SELECT * FROM DecrementDemo;
+----------------+ | DecrementValue | +----------------+ | 15 | | 14 | | 13 | | 12 | | 11 | | 10 | +----------------+ 6 rows in set (0.00 sec)
4. Giảm giá trị (chỉ các hàng > 0)
mysql> UPDATE DecrementDemo -> SET DecrementValue = DecrementValue - 1 WHERE DecrementValue > 0; Query OK, 6 rows affected (0.16 sec) Rows matched: 6 Changed: 6 Warnings: 0
5. Kết quả sau khi giảm
mysql> SELECT * FROM DecrementDemo;
+----------------+ | DecrementValue | +----------------+ | 14 | | 13 | | 12 | | 11 | | 10 | | 9 | +----------------+ 6 rows in set (0.00 sec)
Mở rộng: Giảm với giá trị tùy chỉnh
-- Giảm 5 đơn vị nhưng không dưới 0 UPDATE ten_bang SET ten_cot = GREATEST(ten_cot - 5, 0) WHERE ten_cot > 0;
Lưu ý
- Điều kiện
WHERE ten_cot > 0đảm bảo không trừ vào giá trị 0 hoặc âm - Hàm
GREATEST()hữu ích khi giảm số lượng lớn - Áp dụng tương tự cho tăng giá trị với giới hạn tối đa