Я смущен утверждением Update, которое кажется легким на поверхности. Мне нужно обновить значения в 4 столбцах в Таблице 1 со значениями из Таблицы 2 на основе сопоставления двух отдельных столбцов из каждой таблицы. Вот общий синтаксис:Оператор обновления SQL обновляется
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
Когда я запускаю предложение как оператор выбора, я получаю одну запись, как ожидалось. Тем не менее, когда я запускаю предложение update с использованием того же языка «от», я обнаружил, что запрос обновляет КАЖДУЮ строку в таблице 1 со значениями из таблицы 2, где matchfield1 = 123456.
Мне интересно, нужно ли мне уточнить мои where, чтобы получить квалификацию, основанную на значении matchfield2 (адрес eamil в моем примере), поэтому я добавлю в конец выражения 'и p.matchfield2 =' [email protected] ''.
Я подозреваю, что я очень мало настраиваю эту работу, но тем временем это делает меня сумасшедшим. Спасибо за любой совет!
В чем вы работаете? –
Я использую SQL Server 2008. Извините, я не добавил это к первому сообщению. – user3167010