如何使用另一个 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)"
为此使用 MERGE
。
https://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 非常困难。
我正在尝试更新一个 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)"
为此使用 MERGE
。
https://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 非常困难。