如何使用另一个表中的值更新一个表中的字段

时间:2016-03-01 12:00:54

标签: sql access-vba ms-access-2010

我正在尝试更新一个表中的两个字段,其中包含第二个表中两个字段的值,而没有用于链接这两个表的主键。

第二个表没有主键,因为它是通过Transfersheet方法创建的,只是为了从Excel中将数据导入其中。

到目前为止,这是我的代码(目前这段代码没有做任何事情):

 SQL = "MERGE TableA AS Target" & _
      " USING TableB AS Source" & _
      " ON " & _
      "(Target.Field1=Source.Field1,Target.Field2=Source.Field2)" & _
      " WHEN NOT MATCHED BY Target" & _
      " THEN UPDATE (Field1,Field2)" & _
      " VALUES (Source.Field1,Source.Field2)"

2 个答案:

答案 0 :(得分:0)

使用MERGEhttps://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx

语法:

MERGE  [AS TARGET]
USING  [AS SOURCE]
ON 
[WHEN MATCHED 
THEN  ]
[WHEN NOT MATCHED [BY TARGET]
THEN  ]
[WHEN NOT MATCHED BY SOURCE
THEN  ];

您不一定要声明比较的所有可能结果。您还可以在所有这些操作上定义相同的操作。我不确定你想在匹配方面达到什么目的。

答案 1 :(得分:0)

我终于设法解决了这个问题。这是唯一对我有用的合成器:

SQL = " UPDATE TableA" & _
      " INNER JOIN TableB" & _
      " ON TableB.Field1=TableA.Field1 OR" & _                                                 " TableB.Field2=TableA.Field2" & _
      " SET TableA.Field1=TableB.Field1, TableA.Field2=TableB.Field2"

此语句成功更新两个字段如果其中一个字段在目标表中为空而不在源表中。

感谢您的所有努力,我希望这对某些人有用,当它在VBA中编写SQL时,Access是一个非常难的。