我想做这样的事情:
With T2 as (
Select *
From TABLE t
Where t.a1=2
)
Update T1
Set T1.X = T2.X
Where T1.Y = T2.Y
;
我在update
From
子句中选择了一个解决方案,但我仍然需要创建Where
条件。
所以我想做的另一种选择是:
Update T1
Set T1.X = T2.X
From (
Select *
From TABLE t
Where t.Z=2
) T1
Where T1.Y = T2.Y
;
这就是理论,实际上我的两个例子都不起作用。 我怎么能这样做?
答案 0 :(得分:1)
我认为这正是您所寻找的:
update TABLE
set X = t.X
from TABLE T1
join (select * from TABLE T2 where T2.a1=2) t on t.Y=T1.Y
where T1.Z=2
答案 1 :(得分:0)
如果没有数据库规范,您可以使用相关子查询执行此操作:
update t1
set x = (select t2.x from table t2 where t2.y = t.y and t2.z = 2);
这应该适用于任何数据库,假设子查询不返回多行(如果是这种情况,您可以添加fetch first 1 row only
,limit
,top
或类似的东西)