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

Sử dụng câu lệnh CASE trong UPDATE MySQL để cập nhật có điều kiện

Câu lệnh CASE trong MySQL cho phép thực hiện logic điều kiện phức tạp bên trong câu lệnh UPDATE, cập nhật giá trị khác nhau cho từng nhóm bản ghi dựa trên điều kiện.

Tạo bảng và dữ liệu điểm số

mysql> CREATE TABLE DemoTable (
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserScore INT
);

mysql> INSERT INTO DemoTable (UserScore) VALUES 
(100), (110), (120), (200), (230), (250), (270);

Dữ liệu ban đầu

mysql> SELECT * FROM DemoTable;
+--------+-----------+
| UserId | UserScore |
+--------+-----------+
|      1 |       100 |
|      2 |       110 |
|      3 |       120 |
|      4 |       200 |
|      5 |       230 |
|      6 |       250 |
|      7 |       270 |
+--------+-----------+

Cập nhật điểm số theo quy tắc phức tạp với CASE

mysql> UPDATE DemoTable 
SET UserScore = CASE
    WHEN UserScore BETWEEN 100 AND 120 THEN UserScore + 5
    WHEN UserScore BETWEEN 130 AND 230 THEN UserScore + 10
    WHEN UserScore >= 250 THEN UserScore * 5
    ELSE UserScore
END;
Query OK, 7 rows affected (0.06 sec)
Rows matched: 7  Changed: 7  Warnings: 0

Kết quả sau cập nhật

mysql> SELECT * FROM DemoTable;
+--------+-----------+
| UserId | UserScore |
+--------+-----------+
|      1 |       105 |
|      2 |       115 |
|      3 |       125 |
|      4 |       210 |
|      5 |       240 |
|      6 |      1250 |
|      7 |      1350 |
+--------+-----------+

Giải thích logic

  • Điểm 100-120: cộng 5.
  • Điểm 130-230: cộng 10.
  • Điểm >= 250: nhân 5 (thưởng lớn).
  • Các trường hợp khác: giữ nguyên.

Cú pháp CASE trong UPDATE

UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE default_value
END
[WHERE condition];

Ưu điểm: Thực hiện cập nhật hàng loạt với logic phức tạp trong một câu lệnh duy nhất, hiệu năng tốt hơn nhiều so với cập nhật từng hàng ở ứng dụng.