MS Access插入不存在的位置

时间:2018-09-13 08:47:35

标签: ms-access insert conditional where exists

我有下表:

+-----------+--------+
| FirstName | Active |
+-----------+--------+
| Rob       | TRUE   |
| Jason     | TRUE   |
| Mike      | FALSE  |
+-----------+--------+

仅当约翰的条目尚不存在时,我才想插入“约翰”(Active = True)where Active=True.,我尝试以下操作:

insert into testTable (FirstName, Active) values ('John',True) where not exists (select 1 from testTable where FirstName='John' and Active=True)

但是我明白了 “查询输入必须至少包含一个表或查询”。

有人可以帮助我实现目标吗?

2 个答案:

答案 0 :(得分:2)

您不能将ValuesWHERE子句结合使用。您需要改用INSERT INTO ... SELECT

由于您不想从表中插入值,因此需要使用虚拟表。为此,我使用MSysObjects(这是一个始终存在并且始终包含行的系统表):

INSERT INTO testTable (FirstName, Active) 
SELECT 'John', True
FROM (SELECT First(ID) From MSysObjects) dummy
WHERE NOT EXISTS (select 1 from testTable where FirstName='John' and Active=True)

答案 1 :(得分:0)

在我的情况下,表中已经存在该字段,因此我将其从INSERT更改为UPDATE查询,并且可以正常工作。