您的位置:首页 > 数据库 > > 正文

mysql update 多个字段(mysql update case 更新字段值不固定的操作)

更多 时间:2021-11-05 14:44:43 类别:数据库 浏览量:679

mysql update 多个字段

mysql update case 更新字段值不固定的操作

在处理批量更新某些数据的时候,如果跟你更新的字段的值都一样,比如某个状态都更新为某个固定值,

直接用update table set xxx=xxx where xxx=xxx 这种即可

如果要更新的字段的值是不固定的,用下面的update case when where 这种方式就更方便了

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • UPDATE tablename
  • set a1= CASE userid
  •  WHEN 1 THEN a1+5
  •  WHEN 2 THEN a1+2
  •  END,
  • a2= CASE userid
  •  WHEN 1 THEN a2-5
  •  WHEN 2 THEN a2-2
  • END
  • where userid in (1,2)
  • 用update case when 更新的时候一定要带上 where 条件,否则会更新整张表,后果很严重。

    补充:Mysql update && case when 联合使用 批量更新

    直接码sql:

    room字段值为 18F-N01 这种格式

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • UPDATE t_report SET room = CONCAT_WS( '-', SUBSTRING_INDEX(room, '-', 1) ,
  •  CASE SUBSTRING_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 )
  • WHERE rid IN (
  •  SELECT rid FROM t_report WHERE rdate = '190306' AND ordinal BETWEEN '23' AND '32'
  • )
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。

    原文链接:https://blog.csdn.net/u010533511/article/details/89671605

    您可能感兴趣