MS Access插入不存在的位置

问题描述 投票:2回答:2

我有下表:

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

我想插入'John'(使用Active = True)只有当John的条目不存在时where Active=True.我尝试以下方法:

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

但我得到'查询输入必须包含至少一个表或查询'。

任何人都能帮助我实现的目标吗?

ms-access insert conditional where exists
2个回答
3
投票

你不能将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)

0
投票

在我的情况下,该字段已存在于表中,因此我将其从INSERT更改为UPDATE查询并且它有效。

© www.soinside.com 2019 - 2024. All rights reserved.