在SQL中,添加与联接相对应的一组值

问题描述

| 假设我有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插入ID相等的Table_B中,结果是: 更新了Table_B
ID Value OldValue
1    2     5
2    4     NULL 
3    8     16
有没有使用游标的基于集合的方法?在现实生活中,这将在非常大的表和游标上进行,众所周知,这很慢。也许某种合并? 我在使用sql Server 2008     

解决方法

Update Table_B
Set OldValue = A.OldValue
From Table_A As A
    Join Table_B As B
        On B.ID = A.ID
    ,您想要一个“更新自”
UPDATE B
SET B.OldValue = A.OldValue
FROM Table_B B
INNER JOIN Table_A  ON B.ID = A.ID
通常,我将其写为选择,然后一旦获得结果,便将其转换为更新。     ,简单:
update x set OldValue = a.OldValue
from Table_B x
join Table_A a on x.ID = a.ID
    ,使用联接:
UPDATE TABLE_B
SET OLDAVLUE=A.OLDVALUE
FROM TABLE_B B 
LEFT JOIN TABLE_A A ON B.ID=A.ID
    ,  也许某种合并? 确实。以下是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;