SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)

SQL Server MERGE实战:一条语句搞定插入、更新、删除同步 MERGE是SQL Server中实现表间数据同步的核心原子操作,本质为增强型LEFT JOIN驱动的条件分支DML引擎。其原理在于单执行计划内完成匹配判定与多类型数据变更,确保事务原子性与强一致性。技术价值体现在显著降低I/O开销(实测性能提升69%)、消除中间态数据风险、统一维护匹配逻辑。典型应用场景包括订单状态快照同步、用户标签实时刷新、配置中心版本对齐等高频、中等批量(<50万行)、主键驱动的表同步任务。掌握SQL Server Merge和UPSERT模式,是DBA与后端工程师构建高可靠数据链路的 阅读详情

SQL Server 2008中SQL应用系列--目录索引

SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx

功能:根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。

我们看一个例子,假如,有一总产品列表,一个分店产品列表,需要从分店添加产品时更新总产品列表。

总产品表,分店产品表结构完全一致:

假定现在需要将分店数据完全合并到总产品表中,以编码字段为依据,如果产品名称不致,则用分店的产品名称替换总产品名称。

如果总产品表中不存在,则添加。

可选项:如果分店表中不存在,则从总产品表中删除分店中没有的行。如果这样,总产品表和分店表就完全同步了。实际操作中可能不需要删除目标表的行。

语句如下:


此时,执行完成后,两个表的行均如下:

如果不删除,语句如下:

执行后结果:

 

如果需要记录Merge语句影响的行,可以用Output子句,如果仅仅需要知道影响的行数,可以使用@@ROWCOUNT或ROWCOUNT_BIG(),修改后的示例如下:

结果:

关于@@ROWCOUNT和ROWCOUNT_BIG()的更多说明,请查阅MSDN:

http://technet.microsoft.com/zh-tw/library/ms187316.aspx

http://msdn.microsoft.com/en-us/library/ms181406.aspx

如果影响的结果超过20亿,即整型的最大范围,请使用后者。

 

邀月注:本文版权由邀月和优快云共同所有,转载请注明出处。
助人等于自助!   3w@live.cn

   

12、 SQL Server 2008中的T-SQL增强功能 本文详细介绍了SQL Server 2008中的T-SQL增强功能,包括MERGE语句、DML增强、错误处理、动态管理视图、索引优化和数据完整性检查等内容。通过这些新特性,开发者可以更高效地编写SQL代码并优化数据库性能。 阅读详情

相关推荐

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)

SQL Server增删改查表锁的状态

 WITH NOLOCK 除了本身不锁表(不加任何锁) 也不会受其他的已存在的锁影响, 锁住的行数据也照样读(脏读), 个人认为这句话说得很清楚明了,一句话就能说明白的事,不过好奇怪的是程序员经常用这个语句竟然也不去试一下。 这里顺便总结一下 其他的 SQLSERVER 中的with锁级别:   WITH NOLOCK:无锁   WITH HOLDLOCK:挂一个保持锁   WITH UP...

Lonely 1409

深入解析BLheli电调固件与Dshot通讯协议:从原理到实践

本文深入解析了无人机动力系统的核心——BLheli电调固件与Dshot通讯协议。详细阐述了BLheli固件从经典版到BLheli_32的演进及其功能特性,并重点剖析了Dshot数字协议如何通过数据包和校验码实现更快、更准、更可靠的电机控制。文章还涵盖了双向Dshot遥测、实战配置与调参指南,帮助玩家充分释放无人机性能。

weixin_28273593的博客 433

数据库引擎错误

该表包含错误消息编号和描述,它是sys.messages目录视图中错误消息的文本。 如果适用,错误编号是指向更多信息的链接。 此列表并不详尽。 有关所有错误的完整列表,请使用以下查询查询sys.messages目录视图: SELECT message_id AS Error, severity AS Severity, [Event Logged] = CASE is_event_logged WHEN 0 THEN 'No' ELSE 'Yes' END, text AS [Description]

极客神殿 6216

VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存

本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。

weixin_29170327的博客 279

解密微信DAT图片:一键转换JPG/PNG/GIF的实用指南

本文详细解析微信DAT图片的加密机制及转换方法,提供从定位文件到使用WeijieSoft工具一键转换JPG/PNG/GIF的完整指南。涵盖新旧版微信存储路径差异、批量处理技巧及常见问题解决方案,帮助用户高效恢复重要图片并释放存储空间。

weixin_29305337的博客 2832

注意Sqlserver中使用with(nolock)后实际上还是会加架构锁,只是不对要查询的数据加S索而已(转载)...

开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种。它等同于 READUNCOMMITTED 。 具体的功能作用如下所示(摘自MSDN): 指定允许脏读。不发布共享锁来阻止其他事务修改当前事务读取的数据,其他事务设置的排他锁不会阻碍当前事务读取锁定数据。允许脏读可能产生较多的并发操作,但其代价是读取以后会被其他事务回...

weixin_34342992的博客 713

CTF逆向实战:如何快速识别RC4、TEA和Base64的魔改变种?

本文针对CTF逆向比赛中常见的加密算法魔改问题,详细讲解了如何快速识别和破解RC4、TEA和Base64的变种。通过分析算法核心特征、常见魔改手法,并结合动态调试与脚本编写等实战技巧,帮助逆向分析人员有效应对算法混淆,提升解题效率。

agile9scrum的博客 781

SELECT、INSERT、UPDATE 和 DELETE 语句指定表级锁定提示的范围

锁定提示     可以使用   SELECT、INSERT、UPDATE   和   DELETE   语句指定表级锁定提示的范围,以引导   Microsoft®   SQL   Server™   2000   使用所需的锁类型。当需要对对象所获得锁类型进行更精细控制时,可以使用表级锁定提示。这些锁定提示取代了会话的当前事务隔离级别。                 说明

canduecho的专栏 2215

Foxmail 7.2.25以下版本XSS漏洞实战复现:手把手教你如何构造恶意邮件(含防御方案)

本文深入解析Foxmail 7.2.25以下版本的XSS漏洞(CNVD-2025-06036),详细展示如何构造恶意邮件进行跨站脚本攻击,并提供从客户端升级到企业级防护的多层次防御方案,帮助用户有效防范安全风险。

view3的博客 162

汽车零部件智能装配:C#+YOLOv8实现螺栓漏装检测与齿轮错位识别(附PLC通信与机械臂控制)

YOLOv8:小目标检测的最优解相比YOLOv7,YOLOv8的C2f特征融合网络对小目标(5-10mm螺栓)检测精度提升12%,且推理速度快8%;支持大输入尺寸(不显著增加耗时),可放大螺栓细节;官方提供yolov8n.pt(nano版),在边缘计算盒上能跑40+FPS,满足实时性。C#:工业软件的“兼容性核心”主流PLC(西门子S7-1200/1500)、机械臂(ABB、KUKA)的SDK多基于.NET开发,C#可直接调用,避免跨语言通信延迟;多线程管理成熟(Task。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1146

Insert 语句是怎么加行级锁的?如何避免死锁

时间:当一个事务的等待时间超过该值后,就对这个事务进行回滚,于是锁就释放了,另一个事务就可以继续执行了。如果 where 条件带上了索引列,但是优化器最终扫描选择的是全表,而不是索引的话,我们可以使用。:主动死锁检测在发现死锁后,主动回滚死锁链条中的某一个事务,让其他事务得以继续执行。,其特点是只有在可能发生冲突时才加锁,从而减少了锁的数量,提高了系统整体性能。隐式锁就是在 Insert 过程中不加锁,只有在特殊情况下,才会将隐式锁。,这种机制称为隐式锁。【锁的状态是各个事务共享的,因为锁是加在索引上的】

2301_79437276的博客 823

【PX4学习笔记】3. PX4 固件烧写(1 探索过程)

飞控型号:cube orange【PX4官方用户指南中关于cube orange的描述】 飞控载板型号:Mini Carrier Board【迷你载板说明文档】 固件安装参考:The Cube User Manual V1.0

【人工智障 | 计算鸡视觉 | 机器孩】 7675

SQL Server 2008中SQL增强之三 Merge 在一条语句中使用Insert Update Delete

SQL Server 2008中SQL增强之三 Merge 在一条语句中使用Insert Update Delete

gfuugfdkkn的博客 436

使用C#和ASP.NET创建登录页面

在Visual Studio中,右键单击项目,选择"添加",然后选择"新建项"。在对话框中选择"Web",然后选择"Web 窗体"。在Visual Studio中,右键单击项目,选择"添加",然后选择"新建项"。在Visual Studio中,选择"新建项目",然后选择"ASP.NET Web应用程序"。在上面的代码中,我们创建了一个简单的用户界面,包含一个用户名输入框、一个密码输入框和一个登录按钮。在上面的代码中,我们创建了一个简单的用户界面,包含一个用户名输入框、一个密码输入框和一个登录按钮。

TzData的博客 762

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SQL Server 2008对T-SQL语言的增强

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 315

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SQL Server 2008 的 Transact-SQL 语言增强(2)

作者:张洪举 Microsoft MVP 应用于:SQL Server 2008日期:2008/9/1 6.MERGE 语句在 SQL Server 2008 中,可以使用 MERGE 语句在一条语句中根据与源表联接的结果对目标表执行 INSERT、UPDATE 或 DELETE 操作。如:使用一个语句有条件地在单个目标表中插入或更新行,如果目标表中存在相应行,则更新一个或

张洪举 2622

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SQL Server 2008 几项新特性概述

本文介绍了SQL Server 2008数据集成功能,改进了分析服务,报告服务,以及Office集成方面的新特性……(来自天极网)  计划于2008年第一季度发布的SQL Server 2008不仅对原有性能进行了改进,还添加了许多新特性,比如新添了数据集成功能,改进了分析服务,报告服务,以及Office集成等等。  SQL Server集成服务  SSIS(SQL Server集成服

3260
上一篇: 用Markup Validation Service进行网页的W3C标准语法验证(c#)
下一篇: 一款小巧精致的编辑和编译工具--TextPad
downmoon
博客等级 码龄24年 1676粉丝 494原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值