使用合并,错误消息是关键字“ into”附近有不正确的语法

时间:2018-11-19 07:37:50

标签: sql-server tsql sql-server-2014

我使用像这样的合并:

BEGIN TRANSACTION
    merge into TD_1 tar
    using (select Title,AnnouncementID,SupplyTitle,EmployeeCode,registered,modified from TSupply_2 ) source
    on (tar.SupplyTitle=source.SupplyTitle and tar.EmployeeCode=source.EmployeeCode) 
    when matched then update set tar.modified=getdate()
    when not matched then
    insert (Title,AnnouncementID,SupplyTitle,EmployeeCode,registered,modified) 
    values(source.Title,source.AnnouncementID,source.SupplyTitle,source.EmployeeCode,getdate(),getdate());
COMMIT TRANSACTION

但是错误是:

  

关键字“ into”附近语法错误。

     

“源”附近的语法不正确。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

合并语法:

MERGE <target_table> [AS TARGET]
USING <table_source> [AS SOURCE]
ON <search_condition>
[WHEN MATCHED 
THEN <merge_matched> ]
[WHEN NOT MATCHED [BY TARGET]
THEN <merge_not_matched> ]
[WHEN NOT MATCHED BY SOURCE
THEN <merge_matched> ];

但是您正在使用into

merge into TD_1 tar

source也是SQL的保留字。您可以根据需要替换它。

尝试看看这个tutorial

答案 1 :(得分:0)

现在我知道哪里出了问题,COMPATIBILITY_LEVEL在我的数据库中是80。 所以我不能使用merge

我的数据库版本为Microsoft SQL Server 2008 然后我修改了COMPATIBILITY_LEVEL

ALTER DATABASE DB1
SET COMPATIBILITY_LEVEL = 100

然后没有错误消息。