从表变量更新表

时间:2016-12-01 09:39:37

标签: sql-server tsql sql-server-2012

我有一个SQL查询,在其中声明了一个表。

Declare @t table(tagname nvarchar(50), Value float, timestamp datetime)

然后我在此表中插入一些日期。完成此操作后,我想要从@t更新另一个表(已创建)。

有些事情:

UPDATE Optimiser_tagData
SET Optimiser_tagData.value = @t.value
where Optimiser_tagData.tagName = @t.tagName

这显然不起作用,我收到了这个错误:

  

必须声明标量变量" @ t"

我确信我错过了一些非常简单的事情,但我无法理解它。

1 个答案:

答案 0 :(得分:8)

您的更新声明应如下所示。您必须在Table variableOptimiser_tagData之间应用加入。你应该整个运行update语句(表变量声明等)

UPDATE Optimiser
    SET Optimiser.value = t.value
    from Optimiser_tagData Optimiser
    join @t t
    on Optimiser.tagName = t.tagName