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

Cập nhật cột dùng CASE WHEN không cần bảng tạm trong MySQL

Sử dụng CASE WHEN ... THEN ... ELSE ... END trong mệnh đề SET của UPDATE để đổi giá trị có điều kiện mà không cần bảng trung gian.

Tạo bảng trạng thái user

mysql> CREATE TABLE DemoTable (
    -> UserName VARCHAR(100),
    -> UserStatus VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.74 sec)
mysql> INSERT INTO DemoTable VALUES('John', 'Active'), ('Chris', 'Inactive'), ('Bob', 'Inactive'), ('Robert', 'Active');
Query OK, 4 rows affected (0.29 sec)

Đảo ngược trạng thái: Active ↔ Inactive

mysql> UPDATE DemoTable
    -> SET UserStatus = CASE UserStatus
    ->   WHEN 'Inactive' THEN 'Active'
    ->   ELSE 'Inactive'
    -> END;
Query OK, 4 rows affected (0.28 sec)

Kết quả:

+----------+------------+
| UserName | UserStatus |
+----------+------------+
| John     | Inactive   |
| Chris    | Active     |
| Bob      | Active     |
| Robert   | Inactive   |
+----------+------------+
4 rows in set (0.00 sec)

Ưu điểm: Thực hiện trong một câu lệnh, atomic, không khóa bảng lâu, không cần bảng tạm.