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

时间:2015-01-12 20:21:21

标签: sql-server ms-access

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

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

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

基本上,如果该表中的字段尚不存在,则查询会尝试在表中插入字段。

我得到的错误是:

Missing semicolon (;) at end of SQL statement.

显然事实并非如此,实际上最后还有一个分号。

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

2 个答案:

答案 0 :(得分:1)

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运算符,因为它正在检查它所选择的同一个表中的值。

或者,如果您尝试从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';  

答案 1 :(得分:0)

我一开始并不知道这一点,但看起来我使用的查询可以在SQL服务器中运行,但Access只允许Access查询或一些狗屎。因此,即使Access充当SQL服务器客户端,它也不能真正允许我使用SQL服务器查询。

我经历了通过我公司的痛苦采购获得SQL Server Management Studio作为客户端的痛苦,我无法想到更好的解决方案,不要将Access用作SQL Server客户端的孩子......