我知道这是Access的限制,但是有没有人知道一个好的解决方法,这可以让我避免重复记录在我的表有30个字段并且我不想要任何重复组合的情况下那30个领域?
我基本上是定期批量加载财务数据,而且我只想添加记录,如果特定项目ID的某些信息自上次加载后发生了变化。当我运行添加新记录的追加查询时,我希望使用约束来阻止插入,但是试图找出另一种解决方案。
答案 0 :(得分:3)
要仅插入非重复记录,您需要使用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
)
子查询将相当冗长,但最终它与索引必须完成的工作相同。