所以我似乎被迫使用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.
显然事实并非如此,实际上最后还有一个分号。
它似乎是一个有效的查询,所以我想知道我在这里要做什么?谢谢!
答案 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客户端的孩子......