2016-06-23 3 views
0

У меня есть две таблицы, A, B. A имеет два столбца A1 и A2. B имеет два столбца B1 и B2. В моем случае Некоторые из значений в A2 и B2 одинаковы, для таких случаев я хочу обновить A1 = B1. Таким образом, A1 должен принимать значение от B1, когда A2 = B2. Я написал следующий запрос, но он делает все значения NULL в таблице A. Может ли кто-нибудь помочь мне исправить это?SQL Сравните две таблицы и обновите один из них

Update A 
SET A.A1 = (Select B1 from B Where A.A2 = B.B2) 
+0

Ваш внутренний 'SELECT' вернет обновление' A.A1' в 'NULL', если нет соответствующей строки. –

+0

Есть соответствующие строки. Многие значения в A2 равны B2 – Kazmi

+0

Да, но те, которые не имеют соответствия, будут установлены в 'NULL'. Используйте 'JOIN' как ответ Тима. –

ответ

6

Вы можете использовать INNER JOIN, чтобы определить, какие записи должны быть обновлены:

UPDATE A 
SET A.A1 = B.B1 
FROM A 
INNER JOIN B 
    ON A.A2 = B.B2 

Хорошая вещь об этом подходе логически является то, что только те записи, которые будут обновлены те, которые выживают в INNER JOIN ,

+0

Работал Тим. Большое спасибо. Я новичок в SQL. Ваша помощь приветствуется. еще раз спасибо – Kazmi

1

Мне нравится подход внутреннего соединения от Тима Бигелейзена. Тем не менее, я бы также использовал это для тестирования, сначала выпустив SELECT.

select 
    a.ai 
, b.bi 
, a.a2 
, b.b2 
from a inner join b 
on a.a2 = b.b2 

Проверьте, чтобы убедиться, что значения, которые обновляют (col1) с новыми значениями (col2) являются правильными для 3-го и 4-го столбцов.

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