我在SQL Server 2008中执行以下合并语句:
MERGE
PopulationData AS a
USING ImagesData AS b
ON a.ID = b.ID
WHEN MATCHED THEN
UPDATE SET a.SURNAME = 'joe123'
WHEN NOT MATCHED THEN INSERT(a.ID,a.SURNAME)
VALUES (12454,'joe123');
我有以下错误:
Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'AS'.
有谁能告诉我语法错误在哪里。
答案 0 :(得分:9)
在SQL Management Studio中解析查询会出现以下错误:
Msg 10739,Level 15,State 1,Line 7使用的插入列表 MERGE语句不能包含多部分标识符。使用单身 而是部分标识符。
然后删除标识符......
MERGE
PopulationData AS a
USING ImagesData AS b
ON a.ID = b.ID
WHEN MATCHED THEN
UPDATE SET a.SURNAME = 'joe123'
WHEN NOT MATCHED THEN INSERT(ID,SURNAME)
VALUES (12454,'joe123');
...并且查询成功解析。因此,语法错误几乎肯定不会来自您的MERGE语句。您是真的只执行您发布的语句,还是更大的脚本或过程的一部分?如果双击错误消息,它应突出显示语法错误的行(至少使用SQL 2008)。
更新:我注意到您已为SQL 2005和2008标记了问题,但仅在SQL 2008中支持MERGE。在SQL 2005下解析查询会出现语法错误。
答案 1 :(得分:0)
我在sql server management studio 2008上执行查询但我在另一台服务器上连接到sql server 2005数据库的问题。现在它已修复