2017-06-11 96 views
0

我有兩個表;T-SQL合併 - 當匹配更新列和不匹配時插入整行

DummyTable

Column1 | Column2 | Column3 
a  | b  | c 

GoodTable

Column1 | Column2 | Column3 
a  | b  | c 

我是新來的T-SQL,需要幫助做以下;

合併來自DummyTable數據到GoodTable使用條件

  • 條件:當DummyTable的列2匹配GoodTable的列2然後
    更新GoodTable的欄3,與DummyTable的3列,否則當不匹配,插入DummyTable的行插入GoodTable

下面是我的工作不嘗試

MERGE INTO GoodTable AS Target 
USING (VALUES (SELECT Column2 FROM DummyTable)) AS source (Column2) 
ON Target.Column2 = Source.Column2 
WHEN MATCHED BY TARGET THEN 
UPDATE (Column2) VALUES (Column2) 
WHEN NOT MATCHED BY TARGET THEN 
INSERT INTO GoodTable VALUES DummyTable 
+0

你得到的錯誤信息是什麼? – Jason

+0

@Jason即關鍵字'SELECT'附近的語法不正確。但幾乎整個上述查詢更多的是一個僞代碼而不是真正的查詢 – emerald

回答

0

看看這是否適合你。這是基於你上面的邏輯。

MERGE INTO GoodTable AS Target 
USING DummyTable AS Source 
ON Target.Column2 = Source.Column2 
WHEN MATCHED THEN 
UPDATE SET Column3 = source.Column3 
WHEN NOT MATCHED THEN 
INSERT (Column1,Column2,Column3) --Column names in target table 
VALUES (Column1,Column2,Column3); --Column names in source table 
+0

非常感謝 – emerald