如果记录存在,则更新其他插入

dou*_*ood 10 sql sql-server merge upsert sql-server-2008

我正在尝试在两个SQL Server 2008表之间移动一些数据.如果Table2中的记录与Table1中的电子邮件一起存在,则使用Table1中的数据更新该记录,否则插入新记录.

在表1中,我有许多列; 名字,姓氏,电子邮件等.

如果Table1中的电子邮件存在,我不太确定如何构造查询来更新Table2,如果表2中不存在Table1的电子邮件,我不会插入新行.

我尝试在Google上进行一些搜索,但大多数解决方案似乎都是通过创建一些存储过程来实现的.所以我想知道是否有人可能知道如何构建一个可能做到这一点的合适查询?

APC*_*APC 21

我认为MERGE就是你想要的.


Qua*_*noi 12

MERGE
INTO    table2 t2
USING   table1 t1
ON      t2.email = t1.email
WHEN MATCHED THEN
UPDATE
SET     t2.col1 = t1.col1,
        t2.col2 = t1.col2
WHEN NOT MATCHED THEN
INSERT  (col1, col2)
VALUES  (t1.col1, t1.col2)
Run Code Online (Sandbox Code Playgroud)