我知道这是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
    )


子查询将相当长,但是最后它与索引必须完成的工作相同。

10-07 12:26