SQLServer中merge关键字使用

SQLServer中merge关键字使用,第1张

概述    Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。根据与源表联接的结果,对目标表执行插入、更新或删除 *** 作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行 *** 作的。     需要使用Merge

    Merge关键字是一个神奇的DML关键字。它在sql Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。根据与源表联接的结果,对目标表执行插入、更新或删除 *** 作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行 *** 作的。

    需要使用Merge的场景比如:

    数据同步     数据转换     基于源表对目标表做Insert,Delete *** 作
使用Merge关键字的好处

    首先是更加短小精悍的语句,在sql Server 2008之前没有Merge的时代,基于源表对目标表进行 *** 作需要分别写好几条Insert,Delete。而使用Merge,仅仅需要使用一条语句就好。下面我们来看一个例子。    

同步两个表的数据虽然可以写触发器,但是我是读取系统表结构写入到我的表中,因此触发器无法实现。

merge into  SysDatatable as T --目标数据表
using V_tableInfoStruc as S            --源数据表是一个视图
on T.tablename= S.tablename and T.FIEldname = S.Colname    --两个表之间的关系
when matched                                                                         --在目标表中与源表中都存在,便修改
then update set T. FIEldType= S.CType,T.FIEldLength=S.Length,T.sort=S.sort  --更新语句
when not matched                                                                 --目标表中不存在,在源表中存在,则插入
then insert (ID,tablename,tableChaname,FIEldname,FIEldChaname,FIEldType,FIEldChaType,FIEldLength,Sort)
VALUES(NEWID(),S.tablename,(case when S.tableNotes Is null then S.tablename else S.tableNotes end),
S.Colname,(case when S.ColDesc Is null or S.ColDesc=''  then S.Colname else S.ColDesc end),S.CType,
'',S.Length,S.sort)
when not matched by source                                             --目标表中存在,源表中不存在,则删除
then DELETE;


以下网址说明的更详细:http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.HTML

总结

以上是内存溢出为你收集整理的SQLServer中merge关键字使用全部内容,希望文章能够帮你解决SQLServer中merge关键字使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)