This script proves things nicely:
CREATE TABLE #TestUpdateA
(ColA CHAR(1),
ColB INT)
GO
CREATE TABLE #TestUpdateB
(ColA CHAR(1),
ColB INT)
GO
INSERT #TestUpdateA (ColA, ColB)
VALUES ('A', 0)
INSERT #TestUpdateA (ColA, ColB)
VALUES ('B', 0)
INSERT #TestUpdateA (ColA, ColB)
VALUES ('C', 0)
GO
INSERT #TestUpdateB (ColA, ColB)
VALUES ('A', 1)
INSERT #TestUpdateB (ColA, ColB)
VALUES ('A', 2)
INSERT #TestUpdateB (ColA, ColB)
VALUES ('B', 1)
INSERT #TestUpdateB (ColA, ColB)
VALUES ('C', 1)
GO
UPDATE #TestUpdateA
SET #TestUpdateA.ColB = #TestUpdateB.ColB
FROM #TestUpdateA
JOIN #TestUpdateB ON #TestUpdateA.ColA = #TestUpdateB.ColA
GO
SELECT *
FROM #TestUpdateA
GO
TRUNCATE TABLE #TestUpdateB
GO
INSERT #TestUpdateB (ColA, ColB)
VALUES ('A', 2)
INSERT #TestUpdateB (ColA, ColB)
VALUES ('A', 1)
INSERT #TestUpdateB (ColA, ColB)
VALUES ('B', 1)
INSERT #TestUpdateB (ColA, ColB)
VALUES ('C', 1)
GO
UPDATE #TestUpdateA
SET #TestUpdateA.ColB = #TestUpdateB.ColB
FROM #TestUpdateA
JOIN #TestUpdateB ON #TestUpdateA.ColA = #TestUpdateB.ColA
GO
SELECT *
FROM #TestUpdateA
GO
DROP TABLE #TestUpdateA
DROP TABLE #TestUpdateB
GO
--
Adam Machanic
whoisactive