2016-11-09 129 views
0

我必須檢查表中是否存在記錄,如果有記錄,則更新else insert。檢查記錄是否存在然後更新else insert

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 

我要檢查,如果這存在於表分期,如果它不存在,只有插入。我不能使用合併,因爲它是給我引發的問題,我嘗試使用,如果存在(下面是我的代碼)

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 

任何幫助表示讚賞

回答

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 
) 
相關問題