【问题标题】:How do I write an Update SQL to copy multiple records from one table to update the corresponding field on another table?如何编写更新 SQL 以从一个表中复制多条记录以更新另一表上的相应字段?
【发布时间】: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


【解决方案1】:

您应该利用 SQL 查询设计模式并轻松创建此查询

如果您打算使用 VBA - 我建议对不同的 ListID 进行参数化查询

如果匹配行的 FieldName 称为“ROW”,这将起作用

UPDATE tbl_Listed 
INNER JOIN tbl_Unlisted 
ON tbl_Listed.Row = tbl_Unlisted.Row 
SET tbl_Listed.ListDate = [tbl_Listed].[ListDate]
WHERE (((tbl_Listed.ListDate) Is Null) 
AND ((tbl_Listed.ListID)=64) 
AND ((tbl_Unlisted.ListID)=43));

【讨论】:

  • 谢谢 - 这似乎工作得很好。我没有想过根据重复的行将两个表连接在一起!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多