如何使用单个查询批量更新MySQL数据?
您可以使用CASE命令通过一个查询批量更新MySQL数据。语法如下-
update yourTableName set yourUpdateColumnName = ( Case yourConditionColumnName WHEN Value1 THEN ‘’UpdatedValue’ WHEN Value2 THEN ‘UpdatedValue’ . . N END) where yourConditionColumnName IN(Value1,Value2,.....N);
为了理解上述概念,让我们创建一个表。创建表的查询如下-
mysql> create table UpdateAllDemo −> ( −> BookId int, −> BookName varchar(200) −> );
使用insert命令在表中插入一些记录。插入记录的查询如下-
mysql> insert into UpdateAllDemo values(1000,'Introduction to C'); mysql> insert into UpdateAllDemo values(1001,'Introduction to Java');
使用select语句显示表中的所有记录。查询如下-
mysql> select *from UpdateAllDemo;
以下是输出-
+--------+----------------------+ | BookId | BookName | +--------+----------------------+ | 1000 | Introduction to C | | 1001 | Introduction to Java | +--------+----------------------+ 2 rows in set (0.00 sec)
现在,我们将进行批量更新,即更新
值“IntroductiontoC”的值为“CinDepth”,以及
值“Java简介”和值“深度Java”。
您可以如上使用CASE命令。查询如下-
mysql> update UpdateAllDemo −> set BookName = (CASE BookId WHEN 1000 THEN 'C in Depth' −> when 1001 THEN 'Java in Depth' −> END) −> Where BookId IN(1000,1001);
现在,您可以检查表中的值是否已更新,或者不使用select语句。
查询表中更新值的查询如下:
mysql> select *from UpdateAllDemo;
以下是显示批量更新成功的输出-
+--------+---------------+ | BookId | BookName | +--------+---------------+ | 1000 | C in Depth | | 1001 | Java in Depth | +--------+---------------+ 2 rows in set (0.00 sec)