sql - 如何编写更新 SQL 以从一个表中复制多条记录以更新另一表上的相应字段?
问题描述
我想选择一个字段中按外键分组的所有记录,并更新另一个按外键分组的表中的相应字段。两个表之间的外键不同,互不相关。
理想情况下,我希望表格从看起来像 State A 变成 State 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 外键的字段
但是,当我尝试执行更新 SQL 时,它会引发语法错误。
关于我应该改变什么的任何想法?先感谢您!
编辑 - 从评论更新
我应该澄清一下,每个表上还有另一个字段对于每条记录都是唯一的,因此第 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));
推荐阅读
- linux - 无法构建 GNU automake - help2man 无法从 automake-1.16 获取 `--help' 信息
- c++ - 我收到错误“变量的类型不完整”,但我找不到问题所在
- ios - 在 Swift 的 spritekit 游戏中定义我的宇宙飞船运动
- c# - 如何在 C# 中创建一个填充两个 DataGridView 的函数
- gradle - 哪个文件 gradle.properties 优先级更高?
- python - 熊猫:不能将序列乘以“str”类型的非整数
- c# - 如何从数据表中获取不同的值?
- amazon-web-services - Logstash 并从关系表中查找其他数据?
- lotus-notes - 使用 LDAP 时,什么可能导致 HTTP 403 Forbidden?
- c# - 如何在变量名c#中使用变量