You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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
);

逻辑说明

  1. 首先筛选出TestFormWithDeficiency1表中RecordCopy为Yes的记录
  2. 通过NOT EXISTS子查询检查:这条记录的Location值是否已经在Table1中存在
  3. 只有同时满足“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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:12:12