SQLServer Merger Using语法使用和注意点
SQL多表关联数据更新,如果数据量比较少的情况下,用Update也是可以的;脚本如下:
UPDATE NA_AgentGrpOrder
SET AttrServSIItem=b.AttrValue
FROM NA_AgentGrpOrderAttribute b
WHERE NA_AgentGrpOrder.SubsProdid=b.SubsProdid
当数量比较大时,直接用Update语句更新,效率相对会比较低,建议用Merger和Using来实现数据更新;在Merger后的是目标表,Using后面的是源表。
脚本如下:
;MERGE NA_AgentGrpOrder AS a
USING
(
SELECT y.SubsProdid,y.AttrValue FROM NA_AgentGrpOrderAttribute y
where y.AttrId='ServSIItem'
)AS b
ON a.SubsProdid=b.SubsProdid
WHEN MATCHED THEN
UPDATE set a.AttrServSIItem=b.AttrValue;
上面的写只是Merge和Using的其中一种写法,可以上面叫 WHEN NOT MATCHED THEN INSERT 来执行数据插入等等。
Merge和Using做数据更新虽然会比较快,但是它也有一定的缺陷,
比如在Using后面的源表,和目标表On条件匹配时,源表不能有重复的数据,如果有,就会执行失败并且报错,所有的更新记录都会被回滚。
Merge和Using执行操作时,就算执行成功,有可能不是你想要的执行结果。可以参考下面这个博文。
http://blog.itpub.net/26110315/viewspace-723389/
SQLServer Merger Using语法使用和注意点的更多相关文章
- SQLServer数据库查询语法
SQLServer数据库查询语法 前言: SQLServer数据库介绍: SQLServer数据库是微软公司推出的一款关系型数据库系统,SQL Server是一个可扩展的.高性能的.为分布式客户机/服 ...
- sqlserver迁移mysql语法修改
1.top 100 选取表中前100条改为 limit #{limit},limit 为变量2.获取当前日期getdate()改为now()3.id=#{id,jdbcType=BIGINT}改为i ...
- 【SqlServer系列】语法定义符号解析
1 概述 在数据库函数定义中,经常用到这些符号:<>,::=,[],{},|,..,(),!! .这篇文章简要概述这些符号. 2 具体内容 2.1 <> < ...
- SqlServer与MySql语法比较
1.复制表(包括表结构.表数据) SqlServer: Select * into user_copy from user MySql: CREATE TABLE user_copy LIKE use ...
- SQLSERVER存储过程基本语法
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @us ...
- sql(SqlServer)编程基本语法
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @ ...
- sqlserver编程基本语法
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @ ...
- SQLSERVER存储过程基本语法使用
一.定义变量 --简单赋值 declare @a int print @a --使用select语句赋值 ) select @user1='张三' print @user1 ) print @user ...
- SqlServer触发器常用语法AFTER、INSTEAD OF及其详解
先创建一个简单的触发器 CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR | AFTER | INSTEAD OF [DE ...
随机推荐
- LINUX0.11 内核阅读笔记
一.源码目录 图1 二.系统总体流程: 系统从boot开始动作,把内核从启动盘装到正确的位置,进行一些基本的初始化,如检测内存,保护模式相关,建立页目录和内存页表,GDT表,IDT表.然后进入main ...
- SQL Server扫盲系列——镜像篇
为方便查看,并以专题形式展示,所以我会把一些文章整合起来.本部分为SQL Server镜像系列: 本文出处:http://blog.csdn.net/dba_huangzj/article/detai ...
- 【翻译】Ext JS 6早期访问版本发布
早期访问版本是什么 如何参与 都包括什么 Sencha Ext JS 6 Sencha Pivot Grid Sencha Cmd 6 JetBrains IDE插件 反馈 原文:Announcing ...
- Socket层实现系列 — I/O事件及其处理函数
主要内容:Socket I/O事件的定义.I/O处理函数的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd I/O事件定义 sock中定义了几个I/ ...
- 手把手带你画一个漂亮蜂窝view Android自定义view
上一篇做了一个水波纹view 不知道大家有没有动手试试呢点击打开链接 这个效果做起来好像没什么意义,如果不加监听回调 图片就能直接替代.写这篇博客的目的是锻炼一下思维能力,以更好的面多各种自定义vi ...
- (十三)UITableView数据模型化
多组数据的TableView的设计方法:每一组用一个模型对象表示. 模型包含了标题数据和行数据的数组,在控制器里包含模型的组来对各个模型进行初始化. 在tableView相应的方法中,从控制器的模型组 ...
- cuda中模板的使用
模板是C++的一个重要特征,它可以让我们简化代码,同时使代码更整洁.CUDA中也支持模板,这给我们编写cuda程序带来了方便.不过cuda4.0之前和之后使用模板的方法不一样,这给我们带来了少许困难. ...
- Mahout 系列之--canopy 算法
Canopy 算法,流程简单,容易实现,一下是算法 (1)设样本集合为S,确定两个阈值t1和t2,且t1>t2. (2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p. (3 ...
- 集群通信组件tribes之使用方法
上面已经对tribes的内部实现机制及原理进行了深入的剖析,在理解它的设计原理后看看如何使用tribes,整个使用相当简单便捷,只需要四步: ① 定义一个消息对象,由于这个消息对象是要在网络之间传递的 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...