【问题标题】:query adding only new data to a table查询仅向表中添加新数据
【发布时间】:2014-04-23 02:22:31
【问题描述】:

我有一张历史数据表。我需要运行一个查询,该查询只为不在历史表中的数据添加行。查询和表都具有匹配的唯一行 ID。

当我的表有 1 周前的数据时,当我运行查询时,我只想添加上周的数据。该表有超过一百万行,查询通常每天返回 20,000 行。我不知道我需要返回多少天,所以我无法将这个设置为一周的查询。

我尝试使用显示历史表中所有 ID 的子查询,并使用它通过使用“Not In(Select.....)”过滤新查询,但它需要很长时间,它基本上会崩溃。

我可以通过 ID 将表格链接到查询并仅显示历史表格中的结果,但我不知道如何显示历史表格中没有的结果。

【问题讨论】:

  • 所以你已经尝试了INSERT INTO yourTable SELECT id from yourOthertable WHERE ID not in (select id from yourTable) 并且它冻结了?

标签: ms-access ms-access-2010


【解决方案1】:

我可以看到两个选项:

1 - 将 ID 字段设为关键字段(不允许重复)并使用追加查询。现有的行将导致错误消息并且不会被添加;将追加新行。

2 - 从新表到历史表进行外部联接,强制新表中的所有记录都在查询中,并从历史表中选择 Null ID。这将给出新表中与历史表上的记录不匹配的记录,然后可以将其追加到历史表中。

这两件事都没有错。

【讨论】:

  • 谢谢。我不知道为什么我没有想过让 ID 字段没有重复项。我也在使用你的 is null 想法。这非常有效,它们还可以一起工作,很好地检查一切是否正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
相关资源
最近更新 更多