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