sql-server - 从表变量更新表

标签 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

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

Must declare the scalar variable "@t"

我确信我错过了一些非常简单的东西,但我不太明白。

最佳答案

您的更新声明应如下所示。您必须在表变量Optimiser_tagData之间应用联接。并且您应该整体运行更新语句(表变量声明等)

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

关于sql-server - 从表变量更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907081/

相关文章:

sql - 我怎样才能提高这个慢查询的性能

SQL Server 2012审计报告生成

mysql - 带有 MySql 或 SqlExpress 的 ASP.NET?

mysql - 为什么在正确的方法之后读取并不能产生一致的结果?

vb.net - 执行 SQL 存储过程并处理结果

sql - 消除具有相反值的行

c# - Visual Studio 社区版中的连接字符串

sql-server - SQL 标量函数

tsql - 在 t-sql 中是否可以有一个没有参数的函数?

sql-server - SQL Server 2012 中的日期格式