UPDATE ... FROM не обнаруживает неоднозначности, подобные этой:
CREATE TABLE dbo.source
(
id INT NOT NULL ,
SomeNumber INT
)
GO
CREATE TABLE dbo.target
(
id INT NOT NULL
PRIMARY KEY ,
SomeNumber INT
)
GO
INSERT INTO dbo.source
( id, SomeNumber )
SELECT 1 ,
2
UNION ALL
SELECT 1 ,
3
INSERT INTO dbo.target
( id, SomeNumber )
SELECT 1 ,
0
UPDATE dbo.TARGET
SET SomeNumber = s.SomeNumber
FROM dbo.source AS s
JOIN dbo.TARGET AS t ON s.id = t.id
Строка в вашей целевой таблице содержит два совпадения в источнике, и мы не можем заранее знать, какое значение в конечном итоге обновитцель.