如果不存在,则插入 MS 访问


  • Using MS Access 2019
  • table_a(身份证,姓名(

    不起作用

INSERT INTO table_a ( name ) VALUES (@name_)
WHERE NOT EXISTS (select name from table_a where name=@name_);

错误:查询输入必须至少包含一个表或查询


这行不通

INSERT INTO table ( name ) select @name_
WHERE NOT EXISTS (select name from table where name=@name_);

而不是VALUES您应该使用SELECT但即便如此,Access 也不允许在没有FROM的情况下SELECT
因此,解决方法是在FROM后使用始终只返回 1 行的查询,例如:

SELECT MIN(id) FROM table_a

您可以使用FIRST()而不是MIN()
所以你的代码应该是:

INSERT INTO table_a([name]) 
SELECT @name_
FROM (SELECT MIN(id) FROM table_a) AS t
WHERE NOT EXISTS (SELECT 1 FROM table_a WHERE [name] = @name_);

只需在name上创建一个唯一的索引:

create unique index unq_t_name on t(name);

如果尝试插入重复项,则插入将生成错误。

这样做:

INSERT INTO table ( name ) select @name_
WHERE NOT EXISTS (select name from table where name=@name_);

最新更新