Mysql 是否有任何一条sql语句用于执行批量更新?

Mysql 是否有任何一条sql语句用于执行批量更新?,mysql,sql,Mysql,Sql,我只是有一个sql疑问,实际上我需要对每个颜色值使用多次更新查询。。。每次检查每种颜色的状况变得越来越困难 是否有任何一条sql语句用于执行以下批量“更新”?请告诉我.. update `myTable` set `COLOR`='white' WHERE `CATEGORY` = 'Dress' and `NAME` like '%white%' update `myTable` set `COLOR`='red' WHERE `CATEGORY` = 'Dress' and `NAME`

我只是有一个sql疑问,实际上我需要对每个颜色值使用多次更新查询。。。每次检查每种颜色的状况变得越来越困难

是否有任何一条sql语句用于执行以下批量“更新”?请告诉我..

update `myTable` set `COLOR`='white'  WHERE `CATEGORY` = 'Dress' and `NAME` like '%white%'
update `myTable` set `COLOR`='red'  WHERE `CATEGORY` = 'Dress' and `NAME` like '%red%'
update `myTable` set `COLOR`='blue'  WHERE `CATEGORY` = 'Dress' and `NAME` like '%blue%'
update `myTable` set `COLOR`='pink'  WHERE `CATEGORY` = 'Dress' and `NAME` like '%pink%'
实际上,由于像“%where”这样的
查询无论如何都必须进行完整的表扫描,因此您可以这样做:

update `myTable` set `COLOR`=CASE WHEN NAME LIKE '%white%' THEN 'white'  
WHEN NAME LIKE '%red%' THEN 'red'
...
ELSE `COLOR`
END /*ends the CASE statement*/
WHERE `CATEGORY` = 'Dress' 

编写起来更简单,但您也可以更新每一行(如果MySQL不够聪明,无法更新,有时会使用以前的值)。

您可以使用
CASE

Update  myTable
SET     COLOR = CASE 
                     WHEN  CATEGORY = 'white' AND NAME like '%white%' THEN 'white'
                     WHEN  CATEGORY = 'red' AND NAME like '%red%' THEN 'red'
                     WHEN  CATEGORY = 'blue' AND NAME like '%blue%' THEN 'blue'
                     WHEN  CATEGORY = 'pink' AND NAME like '%pink%' THEN 'pink'
                     ELSE  value 
                END
WHERE   CATEGORY  IN ('white','red','blue','pink')  
Update  myTable
SET     COLOR = CASE 
                     WHEN  CATEGORY = 'white' AND NAME like '%white%' THEN 'white'
                     WHEN  CATEGORY = 'red' AND NAME like '%red%' THEN 'red'
                     WHEN  CATEGORY = 'blue' AND NAME like '%blue%' THEN 'blue'
                     WHEN  CATEGORY = 'pink' AND NAME like '%pink%' THEN 'pink'
                     ELSE  value 
                END
WHERE   CATEGORY  IN ('white','red','blue','pink')