假设我有 Table_A 包含:
ID OldValue
3 16
1 5
和 Table_B 包含
ID Value OldValue
1 2 NULL
2 4 NULL
3 8 NULL
并且我想将Table_A中的OldValues插入Table_B,其中ID相等,结果为:
更新了Table_B
ID Value OldValue
1 2 5
2 4 NULL
3 8 16
在不使用游标的情况下是否有基于集合的方法?在现实生活中,这将是非常大的表格和游标,因为我们都知道很慢。也许某种合并?
我在SQL Server 2008上
答案 0 :(得分:2)
Update Table_B
Set OldValue = A.OldValue
From Table_A As A
Join Table_B As B
On B.ID = A.ID
答案 1 :(得分:1)
您想要“更新自”
UPDATE B
SET B.OldValue = A.OldValue
FROM Table_B B
INNER JOIN Table_A ON B.ID = A.ID
通常我把它写成一个选择,然后一旦我得到结果我将它转换为更新。
答案 2 :(得分:1)
简单:
update x set OldValue = a.OldValue
from Table_B x
join Table_A a on x.ID = a.ID
答案 3 :(得分:1)
使用联接:
UPDATE TABLE_B
SET OLDAVLUE=A.OLDVALUE
FROM TABLE_B B
LEFT JOIN TABLE_A A ON B.ID=A.ID
答案 4 :(得分:1)
也许是某种合并?
事实上。以下是SQL Server 2008支持的标准SQL:
MERGE INTO Table_B
USING Table_A
ON Table_B.ID = Table_A.ID
WHEN MATCHED THEN
UPDATE
SET OldValue = Table_A.OldValue;