在 MS Access 中执行此 INSERT 时出现问题

Problems executing this INSERT in MS Access

所以我似乎被迫使用 MS Access 作为 SQL 服务器客户端。

无论出于何种原因,这都不会执行:

INSERT INTO l9990064_INF_PATH (DATA_PATH)
VALUES ("/OlifeRequest/RequestType") 
SELECT DATA_PATH, "/OlifeRequest/RequestType" 
FROM l9990064_INF_PATH 
WHERE DATA_PATH NOT IN 
(SELECT DISTINCT DATA_PATH 
FROM l9990064_INF_PATH 
WHERE DATA_PATH="/OlifeRequest/RequestType");

基本上,查询会尝试在 table 中插入一个字段(如果该字段在 table 中尚不存在)。

我得到的错误是:

Missing semicolon (;) at end of SQL statement.

显然不是这样的,实际上最后有一个分号。

这似乎是一个有效的查询,所以我想知道我必须在这里做什么?谢谢!

INSERT INTO l9990064_INF_PATH (DATA_PATH)
VALUES ('/OlifeRequest/RequestType');   --<-- Single Quotes


SELECT DATA_PATH, '/OlifeRequest/RequestType'    --<-- Single Quotes 
FROM l9990064_INF_PATH 
WHERE DATA_PATH <>  '/OlifeRequest/RequestType';    --<-- Single Quotes 

也不需要使用 NOT IN 运算符,因为它正在检查它正在选择的同一个 table 中的值。

或者,如果您尝试从 SELECT 语句插入数据,则类似于 ....

INSERT INTO l9990064_INF_PATH (DATA_PATH, Other_Column_Name)
SELECT DATA_PATH, '/OlifeRequest/RequestType'   
FROM l9990064_INF_PATH 
WHERE DATA_PATH <>  '/OlifeRequest/RequestType';  

起初我不知道这一点,但我使用的查询似乎可以在 SQL 服务器上运行,但 Access 只允许 Access 查询或一些乱七八糟的东西。因此,即使 Access 充当 SQL 服务器客户端,它实际上并不允许我使用 SQL 服务器查询。

我经历了在我公司痛苦的采购中获得 SQL Server Management Studio 作为客户端的痛苦,我想不出更好的解决方案,不要将 Access 用作 SQL 服务器客户端孩子们...