首页 > 解决方案 > 具有多个匹配项的基于 SQL Server 集的更新

问题描述

我发现了这个问题,它提出了同样的情况。尝试进行基于集合的更新,并且要更新的表与表中用于更新值的多行匹配。一个最小的例子如下:

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 如何决定哪个值是新值?第一行返回?还有什么?

标签: sqlsql-serversql-updateset-based

解决方案


推荐阅读