【发布时间】:2013-10-21 16:02:12
【问题描述】:
我想通过引用它自己的行中的值以及它在同一个表中的父记录来更新一个表。
我有一个名为 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 代码吗?谢谢
【问题讨论】:
-
试图了解您的最终目标。你有 3 件事我认为你想要完成。 1. 设置 child.chain_id = parent.chain_id。 2. 设置 parent.chain_id = 0。 3. 如果 child.action = 3,则设置 child.status = 1。所有这 3 个都只完成“其中 child.chain_id = 0 和 parent.chain_id != 0”或者是任何一个他们分开做?
-
当且仅当 child.chain_id = 0 和 parent.chain_id != 0 时才完成所有这三件事