2015-06-30 91 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