Access - 比较两个表并在第一个表中更新或插入数据
Posted
技术标签:
【中文标题】Access - 比较两个表并在第一个表中更新或插入数据【英文标题】:Access - compare two tables and update or insert data in first table 【发布时间】:2015-05-29 19:24:24 【问题描述】:在我的 Access 数据库中,我有两个表:
表1:
PersNum Name Surname
2321 Lenora Springer
2320 Donya Gugino
3326 Leland Wittmer
4588 Elmer Mcdill
表2:
PersNum Name Surname
2321 Lenora Farney
2320 Donya Willimas
3326 Leland Wittmer
4588 Maya Mcdill
7785 Yolanda Southall
1477 Hailey Pinner
我需要找到一种方法来检查个人编号(字段“PersNum”),然后如果 PersNum 存在,则更新 Table1 中的姓名和姓氏。如果 PersNum 不存在,则在 Table1 中插入新行。
预期结果:
PersNum Name Surname
2321 Lenora Farney (updated surname)
2320 Donya Willimas (updated surname)
3326 Leland Wittmer (without change)
4588 Maya Mcdill (without change)
7785 Yolanda Southall (new person)
1477 Hailey Pinner (new person)
我正在寻找任何基于 SQL/VBA/DAO/ADO 的解决方案。
【问题讨论】:
【参考方案1】:一个选项是“upsert”或组合的追加/更新查询。
Smart Access 的这个旧技巧是我的最爱之一:
一次查询更新和追加记录
艾伦·比格斯
您知道吗?您可以在 Access 中使用更新查询来访问两者 同时更新和添加记录?这很有用,如果你有 表的两个版本,tblOld 和 tblNew,并且您想要集成 从 tblNew 到 tblOld 的变化。
按照以下步骤操作:
创建更新查询并添加两个表。通过将 tblNew 的键字段拖到 tblOld 的匹配字段上来连接两个表。
双击关系并选择包含来自 tblNew 的所有记录以及仅匹配 tbl旧的。
从 tblOld 中选择所有字段并将它们拖到 QBE 网格中。
对于每个字段,在更新到单元格中输入 tblNew.FieldName,其中 FieldName 与 tblOld 的字段名称匹配。
从视图菜单中选择查询属性并将唯一记录更改为 False。 (这会关闭 SQL 中的 DISTINCTROW 选项 看法。如果你留下这个,你只会在你的 结果,但您希望为每个要添加的新记录添加一个空白记录 到 tblOld。)
运行查询,您将看到对 tblNew 的更改现在位于 tblOld 中。
这只会将已添加到 tblNew 的记录添加到 tblOld。 tblOld 中不存在于 tblNew 中的记录仍将保留在 tblOld。
【讨论】:
以上是关于Access - 比较两个表并在第一个表中更新或插入数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将下拉列表选定的数据传递到另一个表并在 asp.Net MVC 中更新该表