我有一张在访问时定期更新的表。
@EDIT:
此表非常简单,由2个Collumns组成。我将用2个标识符代表他们:Collumn NAME和collumn GRADE。一个NAME可能有N个GRADE。
/ @ EDIT
此表是永久性的,每天都会执行2次操作:对所有列和一个APPEND进行删除,从一个来自.txt的链接表(每天更新)完成。
我需要找到一种方法来创建一个表,该表具有此APPEND操作之前和之后表的差异。类似于具有新内容的表(上次更新中不存在的值)以及包含已删除内容且不在此新UPDATE中的表。
我设法在使用SQL Server的M $'开发人员的网络数据库中找到了一个解决方案(跟踪数据更改似乎是SQL Server中的一个功能),但由于我是Access的新手,我希望少一些复杂。
有人可以通过我可以轻松解决问题的解决方案向我提出想法吗?
答案 0 :(得分:2)
如果表和文本文件都包含可用于标识匹配行的唯一值的列(例如主键),则可以在该列上使用LEFT JOIN
并请求行其中“右侧”列值为Null。结果集将包括“左侧”行,“右侧”表中没有匹配的行。
Access具有无与伦比的查询向导,您可能会发现它很有用。但是这是一个简单的示例,它向我显示TableA.id
中不存在的TableB
值。
SELECT a.id
FROM
TableA AS a
LEFT JOIN TableB AS b
ON a.id = b.id
WHERE b.id Is Null;
在您的情况下,TableB
可以是文本文件的链接。并且在丢弃TableA
中的行之前运行查询。
如果您必须使用多个列来标识匹配项,那么这也是可能的,只需要更改联接的ON
子句。
如果要将查询的结果集存储在历史记录表中,可以将其调整为“追加查询”(INSERT INTO tblHistory (<field list>) SELECT ....
)。
使用“左侧”的TableB
和“右侧”的TableA
重复所有内容,以确定TableB
中不存在TableA
行。