update ステートメントでテーブル変数を参照する際に問題があります。列を使用できないようです@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