合并语句出错。 [英] Error in merge statement.

查看:94
本文介绍了合并语句出错。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我正在使用merge语句合并两个表,但语法错误。请帮我。在此先感谢。





Hello all,

I am working with merge statement to merge two tables but getting error in syntax. Please help me. Thanks in advance.


MERGE INTO MERGE1 AS M1
USING (SELECT *FROM MERGE2) AS M2 ON
M1.ID=M2.ID
AND M1.NAME=M2.NAME
AND M1.SALARY=M2.SALARY
AND M1.ADDRESS = M2.ADDRESS

WHEN MATCHED THEN
UPDATE
SET M1.ID=M2.ID,
M1.NAME=M2.NAME,
M1.ADDRESS=M2.ADDRESS,
M1.SALARY=M2.SALARY

WHEN NOT MATCHED THEN
INSERT
(ID,NAME,SALARY,ADDRESS)
VALUES (M2.ID,M2.NAME,M2.SALARY,M2.ADDRESS)







以下是错误。



错误:



消息156,等级15,状态1,行2

关键字''INTO''附近的语法不正确。

消息156,Level 15,State 1,Line 3

关键字''AS'附近的语法不正确。




Below are the errors.

Error:

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword ''INTO''.
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword ''AS''.

推荐答案

确保Merge1表实际存在,并且您正在针对正确的数据库运行查询。



请注意,Merge仅适用于SQL Server 2008和2012。
Make sure that the Merge1 table actually exists and that you are running the query against the right database.

Note that Merge only works with SQL Server 2008 and 2012.


可能是 ON 条件下缺少括号?



尝试:

May be the missing brackets around the ON condition?

Try:
MERGE INTO MERGE1 AS M1
USING (SELECT *FROM MERGE2) AS M2 ON
   (M1.ID=M2.ID
    AND M1.NAME=M2.NAME
    AND M1.SALARY=M2.SALARY
    AND M1.ADDRESS = M2.ADDRESS)
 
WHEN MATCHED THEN
UPDATE
SET M1.ID=M2.ID,
M1.NAME=M2.NAME,
M1.ADDRESS=M2.ADDRESS,
M1.SALARY=M2.SALARY
 
WHEN NOT MATCHED THEN
INSERT
(ID,NAME,SALARY,ADDRESS)
VALUES (M2.ID,M2.NAME,M2.SALARY,M2.ADDRESS)



参考: MSDN:MERGE(Transact-SQL) [ ^ ]


这篇关于合并语句出错。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆