mysql update case 更新字段值不固定的操作
在处理批量更新某些数据的时候,如果跟你更新的字段的值都一样,比如某个状态都更新为某个固定值,
直接用updatetablesetxxx=xxxwherexxx=xxx这种即可
如果要更新的字段的值是不固定的,用下面的updatecasewhenwhere这种方式就更方便了
UPDATEtablename seta1=CASEuserid WHEN1THENa1+5 WHEN2THENa1+2 END, a2=CASEuserid WHEN1THENa2-5 WHEN2THENa2-2 END whereuseridin(1,2)
用updatecasewhen更新的时候一定要带上where条件,否则会更新整张表,后果很严重。
补充:Mysqlupdate&&casewhen联合使用批量更新
直接码sql:
room字段值为18F-N01这种格式
UPDATEt_reportSETroom=CONCAT_WS('-',SUBSTRING_INDEX(room,'-',1), CASESUBSTRING_INDEX(room,'-',-1) WHEN'N01'THEN'N02' WHEN'N02'THEN'N01' WHEN'N03'THEN'N11' WHEN'N04'THEN'N10' WHEN'N05'THEN'N09' WHEN'N06'THEN'N08' WHEN'N07'THEN'N07' WHEN'N08'THEN'N06' WHEN'N09'THEN'N05' WHEN'N10'THEN'N03' END) WHEREridIN( SELECTridFROMt_reportWHERErdate='190306'ANDordinalBETWEEN'23'AND'32' )
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。