根据其他表格更改列值

问题描述:

我有2个表格。一个带有“真实”数据,第二个带有相关值的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值与其相应REAL_N从表2中我虽然做了CASE,但由于表2包含1500多行,并且每天都会更新新行,所以对我无效。

我需要的东西,对于每个表1的NUM值,检查表2以搜索该新值。因此,对于这个例子中,结果将是:

表1:

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

我怎么能这样做?

+0

可能是重复的:https://*.com/questions/1604091/update-a-table-using-join-in-sql-server – Tyron78

您需要执行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]; 
+0

由于仅此而已。实际上,我没有表1(这只是一个查询),这就是为什么我不考虑内部加入,但因为我可以创建表,它的工作原理。 – Piston

这实际上做你的需要。

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