Giới thiệu
Sử dụng mệnh đề CASE trong câu lệnh UPDATE để gán giá trị ID khác nhau dựa trên điều kiện tên.
1. Tạo bảng và dữ liệu
mysql> create table DemoTable1545 (
-> Id int,
-> FirstName varchar(20)
-> );
Query OK, 0 rows affected (1.65 sec)
mysql> insert into DemoTable1545 values(1,'John');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1545 values(2,'Chris');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1545 values(3,'Bob');
Query OK, 1 row affected (0.15 sec)
2. Dữ liệu ban đầu
mysql> select * from DemoTable1545;
+------+-----------+ | Id | FirstName | +------+-----------+ | 1 | John | | 2 | Chris | | 3 | Bob | +------+-----------+ 3 rows in set (0.00 sec)
3. Cập nhật ID với CASE
mysql> update DemoTable1545
-> set Id = case
-> when FirstName like '%John%' then 101
-> when FirstName like '%Chris%' then 201
-> when FirstName like '%Bob%' then 501
-> else Id
-> end;
Query OK, 3 rows affected (0.18 sec)
Rows matched: 3 Changed: 3 Warnings: 0
4. Kết quả
mysql> select * from DemoTable1545;
+------+-----------+ | Id | FirstName | +------+-----------+ | 101 | John | | 201 | Chris | | 501 | Bob | +------+-----------+ 3 rows in set (0.00 sec)
Ưu điểm: Chỉ cần một truy vấn UPDATE duy nhất thay vì nhiều câu lệnh riêng biệt. Phù hợp cho việc mapping dữ liệu hàng loạt.