MySQL使用CASE WHEN/THEN/ELSE进行批量更新?
使用 CASE WHEN/ THEN/ ELSE 进行批量更新的语法如下 −
UPDATE yourTableName set yourColumnName=case when yourColumnName=Value1 then anyUpdatedValue1 when yourColumnName=Value2 then anyUpdatedValue2 when yourColumnName=Value3 then anyUpdatedValue3 when yourColumnName=Value4 then anyUpdatedValue4 else yourColumnName end;
为了理解上述语法,我们首先创建一个表。创建表的查询如下 −
mysql> create table CaseUpdateDemo -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.78 sec)
使用 insert 命令向表中插入一些记录。查询如下 −
mysql> insert into CaseUpdateDemo values(1,'John'); Query OK, 1 row affected (0.17 sec) mysql> insert into CaseUpdateDemo values(2,'Carol'); Query OK, 1 row affected (0.27 sec) mysql> insert into CaseUpdateDemo values(3,'Mike'); Query OK, 1 row affected (0.11 sec) mysql> insert into CaseUpdateDemo values(4,'Bob'); Query OK, 1 row affected (0.15 sec)
使用 select 语句显示表中的所有记录。查询如下 −
mysql> select *from CaseUpdateDemo;
输出
+------+-------+ | Id | Name | +------+-------+ | 1 | John | | 2 | Carol | | 3 | Mike | | 4 | Bob | +------+-------+ 4 rows in set (0.00 sec)
现在,您可以编写我们上面讨论的查询以使用 Case WHEN THEN ELSE 更新列 id。查询如下 −
mysql> update CaseUpdateDemo set Id=case when Id=1 then 1001 -> when Id=2 then 1002 -> when Id=3 then 1003 -> when Id=4 then 1004 -> else Id -> end; Query OK, 4 rows affected (0.15 sec) Rows matched: 4 Changed: 4 Warnings: 0
现在,您可以使用 select 语句检查 ID 列是否已更新。查询如下 −
mysql> select *from CaseUpdateDemo;
输出
+------+-------+ | Id | Name | +------+-------+ | 1001 | John | | 1002 | Carol | | 1003 | Mike | | 1004 | Bob | +------+-------+ 4 rows in set (0.00 sec)
广告