检查记录是否存在然后更新else插入

时间:2016-11-09 21:23:37

标签: sql-server-2014

我必须检查表中是否存在记录,如果有记录则更新其他插入。

Stg_table
Id  seq   name    company
1   1     aaa     yyy
1   2     aaa     bbb


table 
Id  seq   name    company
1   1     aaa     yyy
1   2     aaa     bbb

现在我在序列3

的分段中有另一行
Stg_table
Id  seq   name    company
1   1     aaa     yyy
1   2     aaa     bbb
1   3     aaa     www

我必须检查它是否存在于表中,如果它不存在则只插入。我不能使用MERGE,因为它给了我触发器问题,我尝试使用if exists(下面是我的代码)

If exists(select 1 from stg_table s
 join table t
on s.id=t.id and t.seq=s.seq )
begin
update -----
end
else 
begin
insert -----
end

然而,记录随着更新而变化,因为它满足条件。我如何在这种情况下插入?

table 
Id  seq   name    company
1   1     aaa     yyy
1   2     aaa     bbb

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

创建两个单独的语句。一个处理更新,另一个处理插入。

更新

UPDATE t
SET ....
FROM table t
INNER JOIN stg_table s
    ON t.id = s.id
    AND t.seq = s.seq

插入内容:

INSERT INTO table (....)
SELECT ..
FROM stg_table s
WHERE NOT EXISTS (
    SELECT ...
    FROM table t
    WHERE t.id = s.id
    AND t.seq = s.seq
)