我使用像这样的合并:
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”附近语法错误。
“源”附近的语法不正确。
我该如何解决?
答案 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
然后没有错误消息。