2015-06-30 3 views
0

У меня есть 2 структуру таблицы следующим образом,Обновление повторяющихся записей из другой таблицы

TABLEA

enter image description here

TableB

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 a в TableB становится обновляется только ID как 1, хотя Prod a также ID с, как 2 и 3 в TableA.

Как мы можем изменить запрос update, чтобы получить все ID s в TableB?

Ожидаемый результат:

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 с таблицейB. То, что я хочу, состоит в том, чтобы приносить только идентификаторы из tableA в таблицеB для соответствия prod. – Raja

Смежные вопросы