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

How do I update fields from one table with values from another table

我正在尝试更新一个 table 中的两个字段,在第二个 table 中使用来自两个字段的值,但没有 link 两个 [=21] 的主键=]s.

第二个 table 没有主键,因为它是通过 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)"

为此使用 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  ];

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

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

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"

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

感谢您的所有努力,我希望这对某些人有用,在 VBA 中编码 SQL 时,Access 非常困难。