Để tăng giá trị của một cột số dựa trên giá trị hiện tại, sử dụng cú pháp SET cột = cột + giá_trị trong lệnh UPDATE.
Cú pháp
UPDATE tên_bảng SET tên_cột = tên_cột + giá_trị_số WHERE điều_kiện;
Ví dụ minh họa
Tạo bảng điểm game:
mysql> CREATE TABLE addANumberToCurrentValueDemo (
-> Game_Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Game_Score INT
-> );
Query OK, 0 rows affected (0.67 sec)
Chèn dữ liệu:
mysql> INSERT INTO addANumberToCurrentValueDemo(Game_Score) VALUES
-> (1090), (204), (510), (7890), (8999), (1093859), (157596), (4857567);
Xem dữ liệu ban đầu:
mysql> SELECT * FROM addANumberToCurrentValueDemo;
+---------+------------+ | Game_Id | Game_Score | +---------+------------+ | 1 | 1090 | | 2 | 204 | | 3 | 510 | | 4 | 7890 | | 5 | 8999 | | 6 | 1093859 | | 7 | 157596 | | 8 | 4857567 | +---------+------------+
Cộng 11 điểm cho Game_Id = 5:
mysql> UPDATE addANumberToCurrentValueDemo
-> SET Game_Score = Game_Score + 11
-> WHERE Game_Id = 5;
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Kiểm tra kết quả (8999 → 9010):
mysql> SELECT * FROM addANumberToCurrentValueDemo;
+---------+------------+ | Game_Id | Game_Score | +---------+------------+ | 1 | 1090 | | 2 | 204 | | 3 | 510 | | 4 | 7890 | | 5 | 9010 | | 6 | 1093859 | | 7 | 157596 | | 8 | 4857567 | +---------+------------+
Cập nhật nhiều hàng cùng lúc
-- Cộng 100 cho tất cả Game_Score < 10000 UPDATE addANumberToCurrentValueDemo SET Game_Score = Game_Score + 100 WHERE Game_Score < 10000;
Ứng dụng thực tế
- Cập nhật điểm thưởng, số dư tài khoản
- Tăng số lượng tồn kho
- Cộng dồn lượt xem, lượt thích
Lưu ý: Luôn có điều kiện WHERE để tránh cập nhật nhầm toàn bộ bảng. Sử dụng transaction nếu cần tính toàn vẹn dữ liệu.