如何使用SQL Server中的合并功能

分类:编程技术 时间:2024-02-20 15:25 浏览:0 评论:0
0
本文与大家分享如何使用SQL Server中的合并功能。小编觉得还是比较实用的,所以分享给大家学习一下。希望您读完本文后有所收获。话不多说,跟着小编一起来看看吧。让我们来看看。

Merge 关键字是一个神奇的 DML 关键字。它是在SQL Server 2008中引入的,它可以简单地将Insert、Update和Delete组合成一句话。 MSDN对Merge的解释非常简短:“根据与源表的连接结果,对目标表执行插入、更新或删除操作。

MERGE目标表

< p>USING源表

ON匹配条件

WHEN MATCHED THEN

语句

WHEN NOT MATCHED THEN

语句;

最后一条语句中的分号不能省略,源表可以是表,也可以是子查询语句

WHEN NOT MATCHED BY TARGET

< p>表示目标表不匹配,BY TARGET是默认的,所以上面我们直接用WHEN NOT MATCHED THEN

WHEN NOT MATCHED BY SOURCE

表示源表不匹配,即源表存在于目标表表中不存在的情况。

主要用法:

merge不能多次更新同一行,也不能同时更新删除同一行

当源表和目标表不匹配时:如果数据在源表中而目标表中没有,则插入数据。如果源表中没有数据,但目标表中有数据,则执行更新或删除数据操作。当源表和目标表数据不匹配时,执行插入操作。当表匹配时:匹配时执行更新操作或删除操作 该子句可以有两个。当有两个时,第一个子句必须是whenmatchedandcondition并且两个匹配子句中只有一个会被执行,并且两个子句都必须是与源不匹配时的更新和删除操作,与上面类似

将icr_codemap_bak合并为ausing icr_codemap as bon a.COLNAME = b.COLNAME and a.ctcode = b.ctcodewhenmatched and b .pbcode <> a.pbcode 然后更新 set a.pbcode= b.pbcode 当不匹配时则插入值(b.colname,b.ctcode,b.pbcode,b.note);

您可以比较和更新字段如果不一致

https://technet.microsoft.com/zh-cn/library/bb510625.aspx 这是MSDN URL

在Merge Matched操作中,只进行UPDATE或 DELETE 语句被允许执行。在合并不匹配操作中,仅允许 INSERT 语句。出现在 Merge 语句中的 Matched 操作只能作为 UPDATE 或 DELETE 语句出现一次,否则将出现以下错误 - An action of type 'WHEN MATCHED' can't在 MERGE 语句的 'UPDATE' 子句中出现多次。 Merge 语句末尾必须包含分号并以 ; 结尾。

ps:用法SQL Server 中的合并使用

执行前:

当匹配且 u.UserId=c.UserId 时,使用图表信息 c 合并到 UserInfo u.UserId=c.UserId 中。 UserName=c.UserName then update set u.lastUpdate=c.LastUpdatewhen notmatch - 不匹配时无法更新(当然不匹配的话也无法更新)然后insert (UserName ,Sex)values( 'ZhangZhao','b');

执行后

Merge和using是一起使用的,特别是在BI数据统计分析中,比如需要分表而不存在的话数据时,必须从父表中删除相应的数据,以保证子表和父表中的数据对应。如果常规做法是运行一个作业,然后通过游标/表值函数/临时表等循环获取数据,然后更新父级,这是效率的浪费。这就是 Merge 派上用场的地方。

以上就是合并功能的使用方法在 SQL Server 中。小编相信有些知识点在我们日常工作中可能会看到或者用到。希望您能从本文中了解更多信息。更多详情请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何使用SQL Server中的合并功能

用户评论