如何在Access中创建仅追加新记录的查询?语法问题求助
如何在Access中创建仅追加新记录的查询?
你的原SQL语句存在几个语法问题,同时逻辑上需要调整才能实现只追加未存在的新记录,我帮你修正并解释:
原SQL的错误点:
- 重复使用了
WHERE关键字:一个SELECT语句只能有一个WHERE,你写了两个,直接导致语法报错 - 拼写错误:
Not Exist应该是NOT EXISTS(Access SQL的标准语法);子查询里的Form是笔误,正确写法是FROM - 子查询写法可优化:不需要查询具体字段,用
SELECT 1更高效,不影响判断逻辑
修正后的SQL语句
INSERT INTO Table1 ( District, Location, PricePerTon ) SELECT TestFormWithDeficiency1.District, TestFormWithDeficiency1.Location, TestFormWithDeficiency1.PricePerTon FROM TestFormWithDeficiency1 WHERE TestFormWithDeficiency1.RecordCopy = Yes AND NOT EXISTS ( SELECT 1 FROM Table1 WHERE Table1.Location = TestFormWithDeficiency1.Location );
逻辑说明
- 首先筛选出
TestFormWithDeficiency1表中RecordCopy为Yes的记录 - 通过
NOT EXISTS子查询检查:这条记录的Location值是否已经在Table1中存在 - 只有同时满足“RecordCopy为Yes”且“Location未在Table1中出现”的记录,才会被追加到
Table1里
额外注意事项
- 如果你的“新记录”判断需要多个字段组合(比如
District+Location共同唯一),可以修改子查询的条件:AND NOT EXISTS ( SELECT 1 FROM Table1 WHERE Table1.District = TestFormWithDeficiency1.District AND Table1.Location = TestFormWithDeficiency1.Location ); - 测试时可以先把
INSERT INTO部分注释掉,只运行SELECT语句,确认要追加的记录是正确的,避免误操作 - Access中布尔值
Yes也可以用=True代替,两种写法都被支持
内容的提问来源于stack exchange,提问作者NormX
相关产品推荐
相关产品推荐

