尝试使用我在PL / SQL中创建的另一个表中的空值来更新我创建的表: 我能够在SQL Server中使用以下更新但是我遇到了PL / SQL中的问题(不要问为什么我在两者中运行它) Overall_Inventory =使用一些填充值和一些null valuse创建的表;这是需要更新这些空值的表 task_table =表也已创建,但包含需要更新到T1的值
update dbh.overall_inventory
set dbh.overall_inventory.case_due_date = tsk.TASK_ACTION_TIMESTAMP
from dbh.overall_inventory,
(SELECT tsk.INQ_KEY,
min(tsk.TASK_ACTION_TIMESTAMP) as TASK_ACTION_TIMESTAMP
FROM dbh.task_table tsk
inner join dbh.overall_inventory Inv
on tsk.INQ_KEY = inv.inq_key
where tsk.ACTION_CD = '324'
group by tsk.INQ_KEY
) tsk
where tsk.INQ_KEY = dbh.overall_inventory.inq_key`
答案 0 :(得分:0)
Oracle在from
语句中不支持update
子句。在这种情况下,可以使用merge语句。
merge into overall_inventory oi
using (select tsk.inq_key,
min(tsk.task_action_timestamp) as task_action_timestamp
from task_table tsk
join overall_inventory Inv
on tsk.inq_key = inv.inq_key
where tsk.action_cd = '324'
group by tsk.inq_key) tsk
on (tsk.inq_key = oi.inq_key )
when matched then
update
set case_due_date = tsk.task_action_timestamp
where case_due_date is null -- as I understood only NULL values
-- need to be updated
注意:未经测试,因为未提供样本数据和所需结果。
答案 1 :(得分:0)
我认为您正在寻找有关选择的更新:
UPDATE (
SELECT product_id, category_id
FROM product) st
SET st.category_id = 5
WHERE st.category_id = 4;