我如何编写更新 SQL 从一个 table 复制多条记录以更新另一个 table 上的相应字段?
How do I write an Update SQL to copy multiple records from one table to update the corresponding field on another table?
我想 select 一个字段中由外键分组的所有记录,并更新另一个 table 由外键分组的相应字段。两个table之间的外键不同,互不相关
理想情况下,我希望 table 从状态 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是我要更新的table
tbl_Unlisted 是包含现有记录的 table
ListDate 是我要从 tbl_Unlisted 复制并更新到 tbl_Listed
的字段
ListID 是包含 tbl_Listed 和 tbl_Unlisted
的外键的字段
但是,当我尝试执行更新 SQL 时抛出语法错误。
知道我应该改变什么吗?提前致谢!
EDIT - Updated from comments
我应该澄清一下,每个 table 上都有另一个字段,每个记录都是唯一的,因此第 #1 行 = A,第 #2 行 = B,第 #3 行 = C,第 4 行 = D
您应该利用 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));
我想 select 一个字段中由外键分组的所有记录,并更新另一个 table 由外键分组的相应字段。两个table之间的外键不同,互不相关
理想情况下,我希望 table 从状态 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是我要更新的table
tbl_Unlisted 是包含现有记录的 table
ListDate 是我要从 tbl_Unlisted 复制并更新到 tbl_Listed
的字段
ListID 是包含 tbl_Listed 和 tbl_Unlisted
但是,当我尝试执行更新 SQL 时抛出语法错误。
知道我应该改变什么吗?提前致谢!
EDIT - Updated from comments
我应该澄清一下,每个 table 上都有另一个字段,每个记录都是唯一的,因此第 #1 行 = A,第 #2 行 = B,第 #3 行 = C,第 4 行 = D
您应该利用 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));