我想通过引用它自己的行中的值以及它在同一个表中的父记录来更新一个表。
我有一个名为 import 的表,如果当前设置为 0 并且父项不是 0,则它需要将子记录的 chain_id 更新为其父记录的 chain_id。如果操作为 3,也将子记录状态设置为 1,否则离开它照原样,并将父状态设置为0。
这是一些非工作代码,说明了我正在尝试做的事情:
update
(
select
c.chain_id as c_chain_id,
c.status as c_status,
c.action as c_action,
p.chain_id as p_chain_id,
p.status as p_status
from import c
join import p on c.original_dissemination_id = p.dissemination_id
where c.chain_id = 0 and
p.chain_id <> 0 and
)
set
c_chain_id = p_chain_id,
c_status = (if c_action = 3 then return 1 else c_status), /* 3 if action = 1 else leave it as it was */
p_status = 0
有人可以将以上内容翻译成一些有效的 oracle 代码吗?谢谢