添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
SQL server Merge into MERGE 语句试图多次更新或删除同一行。目标行与多个源行匹配时会出现这种情况。MERGE 语句无法多次更新/删除目标表的同一行。请简化 ON 子句, 2018-12-10 10:18:20

SQLserver Merge into 的用法 在匹配Using 源表时,有时候会报异常消息 8672,级别 16,状态 1,第 1 行 MERGE 语句试图多次更新或删除同一行。目标行与多个源行匹配时会出现这种情况。MERGE 语句无法多次更新/删除目标表的同一行。请简化 ON 子句,针对这问题的解决办法一般是确保源表的on字段是唯一的。因为我们可以用distinct关键字,保证源表的On 字段的唯一性。

 merge into HR_LeaveData as T using (select distinct 44444 as UserID,''as UserName,'' as DepartMent from HR_LeaveData) as S on T.UserID=S.UserID
  when matched then update set T.AnnualVacation=T.AnnualVacation+(2),T.BreakOffDay=T.BreakOffDay+(3.2)
  when not matched  then insert
  values(S.UserID,S.UserName,S.DepartMent,12,11);
Merge 关键字是一个神奇的DML关键字。它在 SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于 Merge 的解释非常的短小精悍:”根据与源 联接的结果,对 目标 插入、 更新 删除 操作。例如,根据在另一个 中找到的差异在一个 中插入、 更新 删除 ,可以对两个 同步。”,通过这个描述,我们可以看出 Merge 是关于对于两个 之间的数据进 操作的。 可以想象出,需要使用 Merge 的场景比如: 数据转换... MERGE 的定义 MERGE 关键字是一个神奇的DML关键字,它能将INSERT,UPDATE,DELETE等操作并为一句,根据与源 联接的结果,对 目标 插入、 更新 删除 操作。 MERGE 的语法 MERGE INTO target_tableUSING source_tableON conditionWHEN MATCHED THEN operationWHEN NOT MATCHED THEN op... SQL Server 2008将包含用于合并两个 集(rowset)数据的新句法。根据一个源数据 对另一个数据 确定性的插入、 更新 删除 这样复杂的操作,运用新的 MERGE 语句 ,开发者用一条命令就可以完成。对两个 信息同步时,有三步操作要进 。1、首先要处理任何需要插入 目标 数据 的新 。                                                ... OK,就像标题呈现的一样, SQL Server 2008中的 MERGE 语句 能做很多事情,它的功能是根据源 目标 插入、 更新 删除 操作。最典型的应用就是进 两个 的同步。下面通过一个简单示例来演示 MERGE 语句 的使用方法,假设数据库中有两个 Product及ProductNew,我们的任务是将Product的数据同步到ProductNew(当然同步可能是每天通过Job来自动完成的,在此我们只关注 MERGE 的使用)。以下 SQL 创建示例 :--源 CREATE TABLE Product (     Pr 简单记录一下, sql server 中的 merge 相当于 my sql 中的 Insert into on duplicatedtalk is cheap ,show me the money, 哦 ,不对 code:create table merge test( id uniqueidentifier primary key, name varchar(50) ) --insert into m 在项目中常常会遇到一个需要对一个 根据条件不同而进 不同的操作,比如说ERP对于员工的管理——录入员工信息时,对于新入职的员工就新增一条记录,在职的老员工电话换号了就 更新 ;已经离职的就 删除 等等。其实质就是条件分支,当然我们可以用if else if else 这样的 语句 来实现,但还有一个更加强大的 Merge 你应该考虑!