同じ状況を示すこの質問を見つけました。セット ベースの更新を実行しようとしていますが、更新するテーブルが更新値に使用されているテーブルの複数の行に一致します。最小限の例を以下に示します。
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 はどの値が新しい値であるかをどのように決定するのでしょうか? 最初の行が返されましたか?他の何か?