merge 语法解析

Posted meitan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了merge 语法解析相关的知识,希望对你有一定的参考价值。

  
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,[email protected] when not matched then 
             insert(name, age) 
             values(@name,@age); 

  



还要注意的是有一些限制条件:

  • 在 Merge Matched 操作中,只能允许执行 UPDATE 或者 DELETE 语句。
  • 在 Merge Not Matched 操作中,只允许执行 INSERT 语句。
  • 一个 Merge 语句中出现的 Matched 操作,只能出现一次 UPDATE 或者 DELETE 语句,否则就会出现下面的错误 - An action of type ‘WHEN MATCHED‘ cannot appear more than once in a ‘UPDATE‘ clause of a MERGE statement.
  • Merge 语句最后必须包含分号,以 ; 结束。

  

以上是关于merge 语法解析的主要内容,如果未能解决你的问题,请参考以下文章

片段(Java) | 机试题+算法思路+考点+代码解析 2023

知识体系

MSSQL MERGE语法

Orcal语法Merge into用法

MERGE语法详解

无法解析片段中的 findViewById [重复]