对同一个表多次更新合并为一次

msf108 2018-04-29 05:35:17
有三个更新查询需要同时执行,更新的是同一个表的同一个字段,只不过筛选条件和判断后的返回值不同,请问可否将三次更新合并为一次执行?

UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN 0 ELSE 1 END WHERE(id =10 AND 字段3= 1 )--更新id等于10且字段3等于1的记录

UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN 1 ELSE 2 END WHERE(id>10 AND 字段3= 1)--更新iid大于10且字段3等于1的记录

UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN 2 ELSE 3 END WHERE(id>10 AND 字段3= 2)--更新iid大于10且字段3等于2的记录

...全文
1466 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2018-04-30
  • 打赏
  • 举报
回复

update 	表
set 字段1=case when id =10 AND 字段3= 1 then case when 字段2=1 then 0 else 1 end
               when id >10 AND 字段3= 1 then case when 字段2=1 then 1 else 2 end
               when id >10 AND 字段3= 2 then case when 字段2=1 then 2 else 3 end
               else 字段1 end
where id >=10 AND (字段3=1 or 字段3=2)
qinxueyuan 2018-04-29
  • 打赏
  • 举报
回复
when多写几个就可以 UPDATE 表 SET 字段1=CASE WHEN ID=10 and 字段2=1 THEN 0 when id=10 and 字段2<>1 then 1 when id>10 and 字段3=1 then ……以此类推 else ... end 嵌套道理一样
msf108 2018-04-29
  • 打赏
  • 举报
回复
在外层case在加一个when搞定
xiaoxiangqing 2018-04-29
  • 打赏
  • 举报
回复
最好帖出数据来,以及要实现的结果
msf108 2018-04-29
  • 打赏
  • 举报
回复
UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN(CASE WHEN id=10 THEN 0 ELSE 1 END) ELSE (CASE WHEN id=10 THEN 1 ELSE 2 END) END WHERE(id>=10 AND 字段3= 1)
msf108 2018-04-29
  • 打赏
  • 举报
回复
我是用在触发器里面的,执行3次更新语句可以实现我的需求,但感觉太累赘了,所以想简化一下用CASE WHEN嵌套一次搞定,1-2我合并成这样,第三个不知道该怎么搞了 UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN(CASE WHEN 字id=10 THEN 0 ELSE 1 END) ELSE (CASE WHEN 字id=10 THEN 1 ELSE 2 END) END WHERE(id>=10 AND 字段3= 1)
msf108 2018-04-29
  • 打赏
  • 举报
回复
1.--更新id等于10且字段3等于1的记录 UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN 0 ELSE 1 END WHERE(id =10 AND 字段3= 1 ) 2.-更新iid大于10且字段3等于1的记录 UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN 1 ELSE 2 END WHERE(id>10 AND 字段3= 1) 3.--更新iid大于10且字段3等于2的记录 UPDATE 表 SET 字段1=CASE WHEN 字段2=1 THEN 2 ELSE 3 END WHERE(id>10 AND 字段3= 2)
卖水果的net 2018-04-29
  • 打赏
  • 举报
回复
把你的语句贴上来。
msf108 2018-04-29
  • 打赏
  • 举报
回复
我用CASE WHEN嵌套结果总是不对,请大神指点下,不胜感激!

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧