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

MySQL UPDATE sử dụng điều kiện IF

Cập nhật có điều kiện trong MySQL với hàm IF()

Hàm IF() trong MySQL cho phép cập nhật giá trị dựa trên điều kiện ngay trong câu lệnh UPDATE, tránh phải dùng CASE WHEN phức tạp.

Cú pháp

UPDATE yourTableName 
SET yourColumnName = IF(yourColumnName = yourOldValue, yourNewValue, yourColumnName);

Ví dụ: Cập nhật tuổi từ 23 thành 26

Tạo bảng:

mysql> CREATE TABLE updateIfConditionDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(20),
    -> UserAge INT
    -> );

Chèn dữ liệu:

mysql> INSERT INTO updateIfConditionDemo(UserName, UserAge) VALUES
('Larry', 23), ('Mike', 21), ('Sam', 23), ('David', 23), ('Maxwell', 23);

Dữ liệu ban đầu:

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 1      | Larry    | 23      |
| 2      | Mike     | 21      |
| 3      | Sam      | 23      |
| 4      | David    | 23      |
| 5      | Maxwell  | 23      |
+--------+----------+---------+

Cập nhật: Nếu UserAge = 23 thì đổi thành 26, giữ nguyên nếu khác:

mysql> UPDATE updateIfConditionDemo 
SET UserAge = IF(UserAge = 23, 26, UserAge);
Query OK, 4 rows affected (0.20 sec)

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

+--------+----------+---------+
| UserId | UserName | UserAge |
+--------+----------+---------+
| 1      | Larry    | 26      |
| 2      | Mike     | 21      |
| 3      | Sam      | 26      |
| 4      | David    | 26      |
| 5      | Maxwell  | 26      |
+--------+----------+---------+

Các biến thể hữu ích

  • Nhiều điều kiện: Lồng IF() hoặc dùng CASE WHEN
  • Cập nhật nhiều cột: SET col1 = IF(...), col2 = IF(...)
  • Kết hợp WHERE: UPDATE ... SET ... WHERE condition để giới hạn phạm vi

Lưu ý hiệu năng

Hàm IF() được tối ưu tốt trong MySQL, nhưng với bảng lớn nên có WHERE để giảm số dòng quét.