В таких случаях рекомендую делать так :)
Не самое кошерное решение - но зато понятно что происходит и минимум возможности для ошибки :)
--пример таблиц
CREATE TABLE uzer1 (id INT, name1 NVARCHAR(20))
CREATE TABLE uzer2 (id INT, name2 NVARCHAR(20))
-- Заполняем данными
-- Таблица [uzer1]
INSERT INTO [dbo].[uzer1]([id],[name1]) VALUES(1,'Вася')
INSERT INTO [dbo].[uzer1]([id],[name1]) VALUES(2,'Петя')
INSERT INTO [dbo].[uzer1]([id],[name1]) VALUES(3,'Гундяев')
-- Таблица [uzer2]
INSERT INTO [dbo].[uzer2]([id],[name2]) VALUES(1,'Вася')
INSERT INTO [dbo].[uzer2]([id],[name2]) VALUES(3,'Кирил')
--Шаг 1
-- Пишем CTE с джойном двух таблиц - Для проверки что именно у нас на что заменится
;WITH cte_Update
as
(SELECT t1.Name1 AS 'Вот это'
, t2.Name2 AS 'апдейтим на это'
FROM [uzer1] t1
JOIN [uzer2] t2 ON t1.id=t2.id)
--Проверяем что у нас проапдетится именно то что нам надо
SELECT * FROM cte_Update
--Шаг 2
-- пишем все тоже самое только вместо селекта Апдейт
;wITH cte_Update
as
(SELECT t1.Name1 AS 'Вот это'
, t2.Name2 AS 'апдейтим на это'
FROM [uzer1] t1
JOIN [uzer2] t2 ON t1.id=t2.id)
--Апдейтим
UPDATE cte_Update
SET [Вот это] =[апдейтим на это]
-- я использую такой способ, мне он кажется более безопасным и быстрым в написании :)