Mysql 是否有任何一条sql语句用于执行批量更新?
我只是有一个sql疑问,实际上我需要对每个颜色值使用多次更新查询。。。每次检查每种颜色的状况变得越来越困难 是否有任何一条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`
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')