Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cộng giá trị vào cột hiện tại trong MySQL (UPDATE ... SET col = col + giá_trị)

Để 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.