根据其他表更改列值

时间:2017-10-09 07:20:06

标签: sql-server sql-server-2008-r2

我有2张桌子。一个带有“真实”数据,第二个带有两列带有相关值。例如:

表1:

ORG     NUM     INVOICE 
111    AE539     8532
222    AE232     129
333    BF952     1576
111    BF332     395
333    AE416     2685

表2:

 NUM     REAL_N
AE539     00705
AE232     00703
BF952     00701 
BF332     00712
AE416     00729 

我需要的是在表1中将NUM值替换为表2中对应的REAL_N。我虽然做了一个CASE,但由于表2包含超过1500行,并且每天都会更新新行,它对我无效。

我需要一些东西,对于每个Table 1 NUM值,检查表2以搜索该新值。所以这个例子的结果是:

表1:

ORG     NUM     INVOICE 
111    00705     8532
222    00703     129
333    00701     1576
111    00712     395
333    00729     2685

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要执行INNER JOIN以匹配行,然后执行UPDATE

UPDATE [TABLE 1]
SET [NUM] = B.[REAL_N]
FROM [TABLE 1] A
INNER JOIN [TABLE 2] B
    ON A.[NUM] = B.[NUM];

答案 1 :(得分:0)

这实际上可以满足您的需求。

UPDATE A SET A.NUM = B.REAL_N
FROM [TABLE 1] A INNER JOIN [TABLE 2] B
ON A.NUM = B.NUM