追加查询,跳过重复条目(重复项不是主键)

append query, skipping duplicate entries (duplicates are not primary key)

我在这里有一个追加查询。我希望它从 Excel 电子表格更新 Access 中的现有项目 table。我希望它忽略重复项。每次我 运行 它时,它都会弹出关于最终 "Projects.[Measure]" 的错误。我哪里错了?

INSERT INTO Projects ([Measure],[Customer Number], Store, [Customer Name], [CustomerAddress], [Measure Received])

SELECT [Measure], [Customer Number], [Store], [Customer Name], [CustomerAddress], [MeasureReceived]

FROM NewProjects

WHERE NOT EXISTS
(
SELECT * FROM NewProjects
WHERE NewProjects.[Measure] = Projects.[Measure]
)
;

如果没有看到一些示例数据,这很难确定,但也许这会为您提供您正在寻找的插入集。

INSERT INTO Projects ([Measure],[Customer Number], [Store], [Customer Name], [CustomerAddress], [Measure Received])
    SELECT np.[Sales Document], np.[Sold-to party], np.[Site], np.[Name 1], pn.[Sold-to address], np.[Created On]
      FROM NewProjects np
      WHERE np.[Sales Document] NOT IN
        (SELECT p.[Measure] FROM Projects p);

您的主查询包括此子查询:

SELECT * FROM NewProjects
WHERE NewProjects.[Measure] = Projects.[Measure]

WHERE 子句引用了 Projects.[Measure]。但是 Projects 不包含在 FROM 子句中,因此 Access 猜测 Projects.[Measure] 必须是参数的名称。

考虑一种不同的方法。首先创建一个 SELECT 查询,其中 returns "non-duplicate" 行。 LEFT JOIN NewProjectsProjects 并询问右侧 Measure 值为的那些行空 --- NewProjects 行在 Projects:

中不存在(不匹配)
SELECT
    n.Measure,
    n.[Customer Number],
    n.Store,
    n.[Customer Name],
    n.CustomerAddress,
    n.MeasureReceived
FROM
    NewProjects AS n
    LEFT JOIN Projects AS p
    n.Measure = p.Measure
WHERE p.Measure Is Null;

调查访问 "unmatched query wizard"。它可以指导您完成创建类似查询的过程。但是无论您是使用向导还是复制我的示例查询并将其粘贴到 SQL 视图中,请确认它 returns 正确(非重复)的行。然后您需要做的就是将 INSERT 部分添加到查询的开头:

INSERT INTO Projects ([Measure],[Customer Number], Store, [Customer Name], [CustomerAddress], [Measure Received])