微思考源码weisico.com|分享互联网优质资源,免费织梦模板,WP主题下载

SQL update批量更新不同表中的字段值

SQL批量更新语句

方法一

UPDATE TABLE1 SET COLUMN2=(SELECT COLUMN2 FROM TABLE2 WHERE COLUMN1=TABLE1.COLUMN1)

示例Demo

现有如下两个表Test,Mac_new,测试数据如图所示

02.jpg表Test

01.jpg表Mac_new

为演示批量更新语句,现将表Test中的字段zyh的值,更新为表Mac_new字段ksmc的值,关联条件为Test表xh字段的值等于Mac_new表MID字段的值

update Test 
  SET test.zyh =(SELECT  b.ksmc FROM  Mac_new b WHERE b.mid =Test.xh)

执行结果如下

03.jpg

关联值成功更新,无关联值被赋值为NULL

上述update批量更新语句虽然成功得到结果,但是却额外把需要保留的无关联的原值也改变了,为保留原值,update批量更新语句需要添加where条件

完善后的update批量更新语句

update Test 
  SET test.zyh =(SELECT  b.ksmc FROM  Mac_new b WHERE b.mid =Test.xh)
  WHERE exists(select 1 from Mac_new b WHERE b.mid =Test.xh)

执行结果如下

04.jpg

可以看到,添加where条件后的update批量更新语句,成功执行,更新数据的同时亦保留了其他不需要更新的数据。

方法二

  update a
  set a.zyh=b.ksmc
  from Test as a ,Mac_new as b
  where a.xh=b.MID

执行结果

04.jpg

得到的结果和方法一完全相同

这两种方法在执行效率上,数据量不大的时候,效率差不多,大数据量更新未测试,有需求的同学可尝试看一看


微信公众号 weisico-com

微信公众号weisico-com

转载请注明:微思考学习网-关注技术,分享知识 >> SQL update批量更新不同表中的字段值

赞 (0) 收藏
分享到