微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SQL Server 2012中使用MERGE插入/更新数据

如何解决在SQL Server 2012中使用MERGE插入/更新数据

真的不那么难....

你需要:

  • 源表(或查询)以提供数据
  • 将其合并到的目标表
  • 检查这两个表的条​​件
  • 声明如果找到匹配项(在该条件下)该怎么办
  • 声明如果找不到(在该条件下)匹配该怎么办

因此,基本上,它类似于:

-- this is your TARGET table - this is where the data goes into    
MERGE dbo.soMetable AS target       
-- this is your SOURCE table where the data comes from 
USING dbo.AnotherTable AS source    
-- this is the CONDITION they have to "meet" on
ON (target.someColumn = source.AnotherColumn)

-- if there's a match, so if that row already exists in the target table,
-- then just UPDATE whatever columns in the existing row you want to update
WHEN MATCHED THEN                           
    UPDATE SET Name = source.Name,
               OtherCol = source.someCol

-- if there's NO match, that is the row in the SOURCE does *NOT* exist in the TARGET yet,
-- then typically INSERT the new row with whichever columns you're interested in
WHEN NOT MATCHED THEN  
    INSERT (Col1, Col2, ...., ColN)  
    VALUES (source.Val1, source.Val2, ...., source.ValN);

解决方法

我正在使用SQL Server 2012,并且具有两个结构相同的表。如果表2中还不存在新记录,我想将它们从表1插入表2。

如果它们已经存在,那么我想更新表2中的所有现有记录。

我的表中有大约30列,我想更新所有这些列。

有人可以帮忙吗?我查看了通过互联网发布的各种链接,但完全不了解我的声明的外观。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。