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

Cập nhật nhiều giá trị trong bảng với câu lệnh IF trong MySQL

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

Hàm IF() trong MySQL cho phép cập nhật giá trị dựa trên điều kiện logic, tương tự cấu trúc if-else trong lập trình.

Cú pháp

IF(dieu_kien, gia_tri_khi_dung, gia_tri_khi_sai)

Ví dụ minh họa

Tạo bảng DemoTable716:

mysql> CREATE TABLE DemoTable716 (
    Id VARCHAR(100),
    Value1 INT,
    Value2 INT,
    Value3 INT
);
Query OK, 0 rows affected (0.65 sec)

Chèn dữ liệu:

mysql> INSERT INTO DemoTable716 VALUES('100', 45, 86, 79);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable716 VALUES('101', 67, 67, 99);
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable716 VALUES('102', 77, 57, 98);
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable716 VALUES('103', 45, 67, 92);
Query OK, 1 row affected (0.16 sec)

Xem dữ liệu:

mysql> SELECT * FROM DemoTable716;
+------+--------+--------+--------+
| Id   | Value1 | Value2 | Value3 |
+------+--------+--------+--------+
| 100  | 45     | 86     | 79     |
| 101  | 67     | 67     | 99     |
| 102  | 77     | 57     | 98     |
| 103  | 45     | 67     | 92     |
+------+--------+--------+--------+
4 rows in set (0.00 sec)

Cập nhật Value3 cho Id='101': nếu Value1=67 HOẶC Value2=67 thì đặt Value3=67, ngược lại NULL

mysql> UPDATE DemoTable716
SET Value3 = IF(Value1 = 67 OR Value2 = 67, 67, NULL)
WHERE Id = '101';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Kết quả (chỉ hàng Id=101 thay đổi, Value3 từ 99 thành 67):

mysql> SELECT * FROM DemoTable716;
+------+--------+--------+--------+
| Id   | Value1 | Value2 | Value3 |
+------+--------+--------+--------+
| 100  | 45     | 86     | 79     |
| 101  | 67     | 67     | 67     |
| 102  | 77     | 57     | 98     |
| 103  | 45     | 67     | 92     |
+------+--------+--------+--------+
4 rows in set (0.00 sec)

Mở rộng: Cập nhật nhiều hàng cùng lúc

-- Cập nhật tất cả hàng: nếu Value1=67 HOẶC Value2=67 thì Value3=67, else giữ nguyên
UPDATE DemoTable716
SET Value3 = IF(Value1 = 67 OR Value2 = 67, 67, Value3);

Hàm liên quan

  • CASE WHEN ... THEN ... ELSE ... END: Linh hoạt hơn cho nhiều điều kiện
  • IFNULL(): Xử lý NULL
  • NULLIF(): Trả về NULL nếu hai giá trị bằng nhau

Ví dụ CASE WHEN

UPDATE DemoTable716
SET Value3 = CASE
    WHEN Value1 = 67 AND Value2 = 67 THEN 100
    WHEN Value1 = 67 OR Value2 = 67 THEN 67
    ELSE Value3
END;