2015-06-30 133 views
0

我有2個表結構如下,更新重複記錄

表A

enter image description here

表B

enter image description here

我嘗試用下面的查詢更新TableB

update tableB set ID = b.ID from tableB a inner join tableA b on a.prod = b.prod 

enter image description here

Prod aTableB是越來越只ID1更新,雖然Prod a也有ID S作爲2TableA3

我們如何修改update查詢以獲得TableB中的所有ID

預期輸出:

enter image description here

+0

什麼是預期的結果? –

+0

http://i.stack.imgur.com/LXYIq.png 我希望得到的結果如圖所示 – Raja

+1

爲什麼突然間有更多的行?一個'UPDATE'語句不應該插入任何額外的行。 –

回答

2

嘗試使用MERGE概念,

MERGE TableB AS T 
USING TableA AS S 
ON (T.ID = S.ID and T.Prod = S.Prod) 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT(ID, Prod) VALUES(S.ID, S.Prod) 
WHEN MATCHED 
    THEN UPDATE SET T.ID = S.ID, T.Prod = S.Prod 

GO 

你應該試試這個,

Update TableB set ID = A.ID from TableA A 
Inner Join TableB B on B.Prod = A.Prod And B.ID = 0 
+1

'MERGE'是一個很酷的答案 –

+0

比其他....快得多!! –

+0

上面的查詢似乎沒有回答我的問題。它將tableA和tableB合併。我想要的只是從表B中的tableA中帶入ID來匹配產品 – Raja