我知道这是Access的局限性,但是没有人知道一个好的解决方法,它可以让我避免在表有30个字段并且我不希望这30个字段有任何重复组合的情况下重复记录?
我基本上是定期批量加载财务数据,并且仅在自上次加载以来特定项目ID的某些信息已更改的情况下,才想添加记录。当我运行添加新记录的追加查询时,我希望使用约束来阻止插入,但是试图找出另一种解决方案。
最佳答案
要仅插入非重复记录,您需要使用WHERE NOT EXISTS
子查询过滤掉查询中的重复记录,如下所示:
INSERT INTO tTgt (project_id, field1, ..., field30)
SELECT project_id, field1, ..., field30
FROM tSrc
WHERE NOT EXISTS (
SELECT project_id
FROM tTgt
WHERE tTgt.project_id = tSrc.project_id
AND tTgt.field1 = tSrc.field1
...
AND tTgt.field30 = tSrc.field30
)
子查询将相当长,但是最后它与索引必须完成的工作相同。