1 UPDATE NA_AgentGrpOrder 2 SET AttrServSIItem=b.AttrValue3 FROM NA_AgentGrpOrderAttribute b4 WHERE NA_AgentGrpOrder.SubsProdid=b.SubsProdid
[聚合文章] SQLServer Merger Using语法使用和注意点
SQL Server
2018-01-19
19 阅读
当数量比较大时,直接用Update语句更新,效率相对会比较低,建议用Merger和Using来实现数据更新;在Merger后的是目标表,Using后面的是源表。
脚本如下:


1 ;MERGE NA_AgentGrpOrder AS a2 USING 3 (4 SELECT y.SubsProdid,y.AttrValue FROM NA_AgentGrpOrderAttribute y5 where y.AttrId='ServSIItem'6 )AS b7 ON a.SubsProdid=b.SubsProdid8 WHEN MATCHED THEN9 UPDATE set a.AttrServSIItem=b.AttrValue;
上面的写只是Merge和Using的其中一种写法,可以上面叫 WHEN NOT MATCHED THEN INSERT 来执行数据插入等等。
Merge和Using做数据更新虽然会比较快,但是它也有一定的缺陷,
比如在Using后面的源表,和目标表On条件匹配时,源表不能有重复的数据,如果有,就会执行失败并且报错,所有的更新记录都会被回滚。
Merge和Using执行操作时,就算执行成功,有可能不是你想要的执行结果。可以参考下面这个博文。
http://blog.itpub.net/26110315/viewspace-723389/
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。