SQL批量更新语句
方法一
UPDATE TABLE1 SET COLUMN2=(SELECT COLUMN2 FROM TABLE2 WHERE COLUMN1=TABLE1.COLUMN1)
示例Demo
现有如下两个表Test,Mac_new,测试数据如图所示
表Test
表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)
执行结果如下
关联值成功更新,无关联值被赋值为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)
执行结果如下
可以看到,添加where条件后的update批量更新语句,成功执行,更新数据的同时亦保留了其他不需要更新的数据。
方法二
update a set a.zyh=b.ksmc from Test as a ,Mac_new as b where a.xh=b.MID
执行结果
得到的结果和方法一完全相同
这两种方法在执行效率上,数据量不大的时候,效率差不多,大数据量更新未测试,有需求的同学可尝试看一看
百家号 互联网微风说

微信公众号 weisico-com

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