我发现了这个问题,它提出了同样的情况。尝试进行基于集合的更新,并且要更新的表与表中用于更新值的多行匹配。一个最小的例子如下:
CREATE TABLE #tempUpdates (ID INT, TheValue VARCHAR(100))
CREATE TABLE #Target (ID INT, TheValue VARCHAR(100))
INSERT INTO #Target (ID, TheValue)
VALUES (1, 'START')
INSERT INTO #tempUpdates (ID, TheValue)
VALUES (1, 'tUpdate'),
(1, 'SecondUpdate')
UPDATE t
SET t.TheValue = u.TheValue
FROM #Target t
INNER JOIN #tempUpdates u ON u.ID = t.ID
SELECT * FROM #Target
另一个问题的答案涉及获取特定更新值的方法。我想知道的是在上面的例子中,或者其他类似的情况下,SQL Server 如何决定哪个值是新值?第一行返回?还有什么?