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 - 比较两个表并在第一个表中更新或插入数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用枢轴连接两个表并在一个表中组合两个字段

mysql查询加入,比较两个表并返回第一个表中的所有记录

从mysql连接两个表并在一个JSP列表中显示信息[重复]

如何将下拉列表选定的数据传递到另一个表并在 asp.Net MVC 中更新该表

将数据从一个表更新到另一个表并在新的 ms 访问 .net 时插入

用于创建表并在两个字段上添加唯一索引的 Rails 迁移文件在迁移期间似乎被忽略了