我在看MERGE语句,我不明白它的意义。
如果我错了,请纠正我,但基本上,它使目标表成为源表的相同副本。
所以,从一个表中删除记录,简单地插入.从其他行中选择所有行?
在合并的效率方面,我是不是缺少了什么?
发布于 2020-01-29 14:09:24
Merge语句不会使目标表成为源表的副本,这部分内容是错误的。
它为编写条件DML语句( insert / update / delete )提供了一种更短的方法,方法是允许您编写一条语句,该语句将执行上述语句之一(或任何组合)。
然而,尽管Merge是作为一条语句编写的,但在Server后面,它实际上是作为一系列语句执行的--其中的每一部分都是一条语句--这可能会给未预期的用户带来很多问题。
about发表了一篇题为对Server的MERGE语句要小心的文章--在Server中使用Merge语句之前,您应该彻底阅读它。
大多数情况下,Merge用于执行"upsert“--意思是--如果存在更新记录,或者插入(如果不存在)。在这个问题的回答中描述了server中更好、更安全的“重新插入”模式,我强烈建议在任何可能的时候在Merge上使用该模式。
https://stackoverflow.com/questions/59967848
复制相似问题