SQL Server 2008中的合并语句错误

Joe*_*123 4 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');
Run Code Online (Sandbox Code Playgroud)

我有以下错误:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'AS'.
Run Code Online (Sandbox Code Playgroud)

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

Pon*_*ife 9

在SQL Management Studio中解析您的查询会给我以下错误:

消息10739,级别15,状态1,行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');
Run Code Online (Sandbox Code Playgroud)

...并且查询成功解析.因此,语法错误几乎肯定不会来自您的MERGE语句.您是真的只执行您发布的语句,还是更大的脚本或过程的一部分?如果双击错误消息,它应突出显示语法错误的行(至少使用SQL 2008).

更新:我注意到您已为SQL 2005和2008标记了问题,但仅在SQL 2008中支持MERGE.在SQL 2005下解析查询会出现语法错误.