标签:否则 values delete 成功 let 对象 记录 连接 cti
merge into 支持sqlserver 2008 和以上的版本 无论是INSERT还是UPDATE,从执行之间上看,MERGE INTO(MERGE)都要比直接INSERT/UPDATE的效率高;
MERGE INTO - 数据的目的地,将数据最终 MERGE 到的表对象
USING 与源表连接 ON 关联的条件
WHEN MATCHED - 如果匹配成功,即关联条件成功 (这时就应该将 SOURCE 中其它的所有字段值更新到 TARGET 表中)
WHEN NOTMATCHED BY TARGET - 如果匹配不成功 (TARGET 中没有这一条记录但是 SOURCE 表有,说明 SOURCE 表多了新数据因此应该插入到 TARGET 表中)
WHEN NOTMATCHED BY SOURCE - 如果匹配不成功 (SOURCE 中没有这一条记录但是 TARGET 表有,说明 SOURCE 表可能把这条数据删除了,所以 TARGET 也应该删除)
下面是 如果数据不存在添加,存在更新
merge into table t using (select id = id) b on( t.id = b.id) when matched then update set name = @name,age=@age when not matched then insert(name, age) values(@name,@age);
还要注意的是有一些限制条件:
标签:否则 values delete 成功 let 对象 记录 连接 cti
原文地址:http://www.cnblogs.com/liaokui/p/7580986.html