我在更新语句中引用表变量时遇到问题。似乎我不能使用该@a.id
列(编译器说它没有声明)。
下面的例子只是为了说明问题而写的,意思是我知道我可以解决当前示例中重命名列 id 并避免@a.id
引用的问题,但这不是一个选项,我真的做不到。我看到一些解决方案使用 from 语句为正在更新的表设置别名,但在此示例中,我将 from 语句用于其他内容。有没有其他方法可以解决它?
declare @a table
(
id int not null,
name varchar(100) null
)
insert into @a (id, name) values (1, null)
insert into @a (id, name) values (2, null)
insert into @a (id, name) values (3, null)
declare @b table
(
id int not null,
name varchar(100) null
)
insert into @b (id, name) values (1, 'one')
insert into @b (id, name) values (2, 'two')
update @a
set
name = f.name
from
(
select
id,
name
from @b
where
id = @a.id
) f
where
@a.id = f.id