You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CASE语句优化多条件多字段的evtentries表批量更新?

批量更新SQL语句优化:同时用CASE处理多字段更新

你可以给ediv字段也套一层CASE逻辑,和ro字段的写法一致,就能在同一条UPDATE语句里完成两个字段的批量更新。

原始单条更新语句(需执行300+次)

update evtentries
  set ro = '1',
  ediv = 'A'
  where 
  entid = '1234' and ID = '10024'

update evtentries
  set ro = '2',
  ediv = 'B'
  where 
  entid = '5678' and ID = '10024'

你当前的尝试代码

update evtentries
  set ro = CASE WHEN entid = '1234' THEN '1'
                WHEN entid = '5678' THEN '2'
                ELSE ro
                END
     , ediv = 'A'  <---- need to update with the case
WHERE entid IN ('1234', '5678') and ID = '10024'

优化后的批量更新语句

update evtentries
  set ro = CASE WHEN entid = '1234' THEN '1'
                WHEN entid = '5678' THEN '2'
                ELSE ro
                END
     , ediv = CASE WHEN entid = '1234' THEN 'A'
                   WHEN entid = '5678' THEN 'B'
                   ELSE ediv
                   END
WHERE entid IN ('1234', '5678') and ID = '10024'

说明

  • 给ediv字段添加对应的CASE判断,匹配entid设置对应的值
  • ELSE ro和ELSE ediv是为了保证不匹配的记录,对应字段保留原有值,不会被误修改
  • 原本需要数百次执行的UPDATE操作,现在只需执行一次,大幅减少数据库请求次数

内容的提问来源于stack exchange,提问作者H.L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:05:03