SQL Server 2008中的合并语句错误

时间:2011-11-17 15:21:59

标签: sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2

我在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'.

有谁能告诉我语法错误在哪里。

2 个答案:

答案 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数据库的问题。现在它已修复