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

标签 sql excel ms-access ms-access-2010

我在这里有一个追加查询。我希望它从 Excel 电子表格更新 Access 中的现有项目表。我希望它忽略重复项。每次我运行它时,它都会弹出一个关于最终“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]
)
;

最佳答案

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

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

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

考虑一种不同的方法。首先创建一个SELECT返回“非重复”行的查询。 LEFT JOIN NewProjects 到 Projects 并询问右侧 Measure 值为 Null 的那些行 --- 这些是 Projects 中不存在(不匹配)的 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;

调查 Access “不匹配的查询向导”。它可以指导您完成创建类似查询的过程。但无论您使用向导还是复制我的示例查询并将其粘贴到 SQL View 中,请确认它返回正确(非重复)行。然后您需要做的就是添加 INSERT一 block 到查询的开头:

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

关于sql - 追加查询,跳过重复条目(重复项不是主键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277024/

相关文章:

c# - 我可以避免 Entity Framework 使用 SQL_VARIANT 来查询吗?

excel - 如何在 if 语句中嵌套向量索引匹配函数? (Excel)

excel - 与另一个字典一起使用时字典对象不会被删除

excel - 从 Excel VBA 检查 MS Access 中是否存在查询

ms-access - 错误 3219 - 无效操作

java - 通过结果集检索单个值并将其与字符串值进行比较

SQL 按年、月、周、日、小时分组 SQL 与程序性能对比

sql - 如何同时按最大日期和组获取 grails 中的记录

excel - 将多个文件拖放到用户窗体

mysql - 我可以将 MySQL 中的 EER 图转换为 Microsoft Access 数据库吗?