【问题标题】:How to reference a temporary table in a subquery?如何在子查询中引用临时表?
【发布时间】:2012-11-30 16:27:06
【问题描述】:

我在存储过程中有一个本地表变量,包含几列;我需要根据该行的第 1 列的值,使用子查询的结果更新每行的第 2 列。

类似:

UPDATE @mytable
SET column2 = (SELECT ... FROM ... WHERE something = @mytable.column1)

但这似乎不起作用,我收到一个关于 @mytable 未定义的错误。

这个查询的正确语法是什么?

【问题讨论】:

  • 你在哪里调用这个语句?从存储过程内部?
  • 是的。临时表和语句都在同一个SP中。
  • @ 不表示临时表,它表示 TABLE 类型的变量。 # 用于临时表 (#mytable)。

标签: sql sql-server sql-server-2008-r2 sql-update


【解决方案1】:

您是否尝试过使用别名?

UPDATE temp 
SET temp.column2 = (SELECT ... FROM ... WHERE something = temp.column1) 
FROM @mytable temp

【讨论】:

  • 应该是UPDATE temp SET temp.column2 = (SELECT ... FROM ... WHERE something = temp.column1) from @mytable temp
猜你喜欢
  • 1970-01-01
  • 2018-08-03
  • 2012-12-15
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2023-03-14
  • 2014-04-30
  • 2013-02-27
相关资源
最近更新 更多