【发布时间】:2018-05-06 03:36:29
【问题描述】:
我想选择一个字段中按外键分组的所有记录,并更新另一个按外键分组的表中的相应字段。两个表之间的外键不同,互不相关。
理想情况下,我希望表格从状态 A 变为状态 B
A 州
tbl_Unlisted tbl_Listed
ListID ListDate ListID ListDate
43 04/01/2018 64
43 04/02/2018 64
43 04/03/2018 64
43 04/04/2018 64
B 州
tbl_Unlisted tbl_Listed
ListID ListDate ListID ListDate
43 04/01/2018 64 04/01/2018
43 04/02/2018 64 04/02/2018
43 04/03/2018 64 04/03/2018
43 04/04/2018 64 04/04/2018
这是我对更新 SQL 的尝试:
UPDATE tbl_Listed
SET ListDate = tbl_Unlisted.ListDate
FROM tbl_Unlisted
WHERE tbl_List.ListID = 64
AND tbl_Unlisted.ListID = 43;
tbl_Listed 是我要更新的表
tbl_Unlisted 是包含现有记录的表
ListDate 是我想从 tbl_Unlisted 复制并更新到 tbl_Listed 的字段
ListID 是包含 tbl_Listed 和 tbl_Unlisted 的外键的字段
但是,当我尝试执行 Update SQL 时,它会引发语法错误。
知道我应该改变什么吗?提前谢谢!
编辑 - 从 cmets 更新
我应该澄清每个表上的另一个字段对于每条记录都是唯一的,因此第 1 行 = A,第 2 行 = B,第 3 行 = C,第 4 行 = D
【问题讨论】:
-
它应该如何知道在每一行中放置哪个日期?您需要一些方法来确定源表中的第 3 行应该映射到目标表中的第 3 行。
-
我应该澄清每个表上的另一个字段对于每条记录都是唯一的,因此第 1 行 = A,第 2 行 = B,第 3 行 = C,第 4 行 = D
-
您想要做的事情通过 Access-VBA 非常容易完成。如果您知道您正在使用记录集做什么,那么您可以在运行记录集时记住这些字段来设置它们。否则,IIRC,使用 SQL 完成此操作的唯一方法是拥有一个“中间”表,然后从中更新。
-
我还应该澄清一下,我已经通过 Access-VBA 执行此操作。我浏览了一些利用记录集的类似线程,但我不太确定如何在这里使用它。
标签: sql ms-access vba ms-access-2010