sql-server-2008 - SQL Server 2008 中的合并语句错误(Incorrect syntax near)

标签 sql-server-2008 merge

我试图在两个临时表中使用“MERGE”,但未能获得结果。

错误:关键字“AS”附近的语法不正确。

    Create Table #tmp1
    (
    [Server] varchar(4),
    [DateTime] datetime,
    IdComponent int,
    AvgTimeTaken int
    )

    Create Table #tmp2
    (
    [Server] varchar(4),
    [DateTime] datetime,
    IdComponent int,
    AvgTimeTaken int
    )

    insert into #tmp1 values ('BE01','2012-08-01 00:00:00',1,100)
    insert into #tmp1 values ('BE02','2012-08-01 00:00:00',2,100)
    insert into #tmp1 values ('BE03','2012-08-01 00:00:00',3,100)
    insert into #tmp1 values ('BE04','2012-08-01 00:00:00',4,100)
    insert into #tmp1 values ('BE05','2012-08-01 00:00:00',5,100)


    insert into #tmp2 values ('BE01','2012-08-01 00:00:00',1,100)
    insert into #tmp2 values ('BE02','2012-08-01 00:00:00',2,200)
    insert into #tmp2 values ('BE03','2012-08-01 00:00:00',3,300)
    insert into #tmp2 values ('BE04','2012-08-01 01:00:00',4,400)
    insert into #tmp2 values ('BE05','2012-08-01 02:00:00',5,500)

    MERGE #tmp1 AS [Target]
    USING #tmp2 AS [Source]
    ON ([Target].[Server] = [Source].[Server] 
        AND [Target].[DateTime] =  [Source].[DateTime] 
        AND [Target].[IdComponent] = [Source].[IdComponent])
    WHEN MATCHED THEN 
        UPDATE
        SET [Target].AvgTimeTaken = [Source].AvgTimeTaken
    WHEN NOT MATCHED THEN   
        INSERT ([Target].[Server], [Target].[DateTime], [Target].IdComponent, [Target].AvgTimeTaken)
VALUES ([Source].[Server], [Source].[DateTime], [Source].IdComponent, [Source].AvgTimeTaken);

我不确定我会不会错。最后还有一个分号。 请帮忙!

最佳答案

我以前遇到过这个错误,这是因为 SQL Server 2008 R2 不支持合并语法,除非您通过执行以下命令设置兼容模式:

ALTER DATABASE mydatabase SET COMPATIBILITY_LEVEL = 100

其中 mydatabase 是您要将此应用到的数据库的名称。

关于sql-server-2008 - SQL Server 2008 中的合并语句错误(Incorrect syntax near),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787311/

相关文章:

mysql - 如何在MySQL中合并具有相似名称的多个表

sql-server-2008 - 此表的最快模式方法?

delphi - dbExpress 和 SQL Server 2008 速度慢

python - Pandas 合并错误TypeError : '>' not supported between instances of 'int' and 'str'

python - 如何合并 Jupyter 笔记本中的更改

python - 如何通过Python合并不同文件夹中同名文件的内容?

git - 将分支 merge 到 Git 中的多个分支

c# - 如何从 SQL 中读取父子数据?

sql - 在 SQL Server 中创建具有非唯一列的外键

SQL Server 2008 - 从字符串开头去除数字