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

我在这里有一个追加查询。 我想从Excel电子表格中更新Access中的现有项目表。 我希望它忽略重复。 每次运行它时,都会popup一个关于最终“项目。[测量]”的错误。 我哪里做错了?

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] ) ; 

您的主要查询包括这个子查询:

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

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

考虑一个不同的方法。 首先创build一个返回“非重复”行的SELECT查询。 LEFT JOIN NewProjects 项目,并要求那些行的右侧测量值是空的—那些是项目中不存在(不匹配)的NewProjects行:

 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; 

调查访问“无与伦比的查询向导”。 它可以引导您完成创build类似查询的过程。 但是,无论您使用向导还是复制我的示例查询并将其粘贴到SQL视图中,确认它都会返回正确的(非重复)行。 然后,您只需将INSERT片添加到查询的开头:

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

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

 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);