【发布时间】:2017-09-09 12:19:54
【问题描述】:
我有两张桌子:
A 列是我们将在其上进行连接的列。我需要更新:
B = if(D not null) then D
else C
我试过这个:
update Tab1 x
set B = case when
(select D from Tab2 t2
inner join Tab1 t1
on t1.A = t2.A
where t1.A = x.A) is not null
then (select D from Tab2 t2
inner join Tab1 t1
on t1.A = t2.A
where t1.A = x.A)
else x.D END
where x.A > (user_input) and x.A <= (user_input)
这给了我输出:0 行更新。
另外,作为说明,我需要在一个更新语句本身中执行此操作。表 Tab1 中还有其他非依赖列将在同一更新中更新。
我知道这看起来很混乱,两次执行相同的 select 子查询根本没有优化,但我并不真正了解如何实现这一点。
感谢任何帮助或指点!
【问题讨论】:
标签: oracle sql-update case