Меня смущает оператор Update, который на первый взгляд кажется простым. Мне нужно обновить значения в 4 столбцах в таблице 1 значениями из таблицы 2 на основе сопоставления двух отдельных столбцов из каждой таблицы. Вот общий синтаксис:
Update Table1
set field1 = [table2 field1]
, field2 = [table2 field2]
, field3 = [table2 field3]
, field4 = [table2 field4]
--select *
from Table2 p inner join Table1 c
on p.matchfield1 = c.matchfield1 and p.matchfield2 = c.matchfield2
where c.database_id = 1 --qualifier since join clause may not provide unique result set
and p.matchfield1 = 123456 --to test the statement on a single record first
Когда я запускаю предложение как оператор выбора, я получаю одну запись, как и ожидалось. Однако, когда я запускаю предложение обновления, используя тот же язык «из», я обнаруживаю, что запрос обновляет КАЖДУЮ строку в таблице 1 значениями из таблицы 2, где matchfield1 = 123456.
Мне интересно, нужно ли мне дополнительно уточнить мое предложение where для квалификации на основе значения matchfield2 (адрес eamil в моем примере), поэтому я бы добавил в конец оператора 'and p.matchfield2 = '[email protected] ''.
Я подозреваю, что мне очень далеко до этой работы, но в то же время это сводит меня с ума. Спасибо за любой совет!