我有一个表A,其中有许多行,并且有一个函数返回只有一行的表B。我需要使用B中函数返回的标准值来更新A.Other和A.ID的每个值,所以从:
---------- TABLE A --------- ------------ TABLE B ------------
id Name ID Other Def_Other Def_Province Def_ID
1 x 1 asqas hello PD 0
2 y 10 asd
3 Z 12 adf
表A应该变为:
---------- TABLE A ---------
id Name ID Other
1 x 0 hello
2 y 0 hello
3 Z 0 hello
我尝试过
update dbo.Table_A
set Other = select top 1 name FROM dbo.generate_table_b(1)
但是无法做到。 是否可以在不为每个column \ type声明变量的情况下做到这一点?我必须编辑许多不同类型的字段。 预先感谢。
答案 0 :(得分:1)
我想你想要
update a
set Other = b.name,
id = b.Def_ID
from dbo.Table_A a cross join
dbo.generate_table_b(1) b;
答案 1 :(得分:0)
您可以使用APPLY
:
UPDATE a
set a.id = b.Def_ID,
a.Other = b.Def_Other
FROM tablea a CROSS APPLY
(SELECT b.*
FROM dbo.generate_table_b(1)
) b;