首页 > 解决方案 > oracle sql中删除行的顺序

问题描述

我有这个应该可以工作的代码

delete from
(
select oi.* from orderinfo oi
where oi.order_status = 'Выполнен'
and
oi.rowid in
(
select orderinfo.rowid from orderinfo
inner join ordered_medicines om on oi.order_id = om.order_id and oi.order_status = 'Выполнен'
inner join medicine_instances mi on om.medicine_id_instance = mi.medicine_id_instance
));

但问题是由于主键我无法开始从 orderInfo (ORA-02292) 中删除,我应该删除 oredered_medicines 中的第一个,然后才从 orderinfo 中删除,我试过这个:

Delete from (
select om.* from ordered_medicines om
where oi.order_id = 'Выполнен'
and
om.rowid in (
select ordered_medicines.rowid from ordered_medicines
inner join orderinfo oi on oi.order_id = om.order_id
)
);

但它不起作用,我认为是因为 oi。尚未定义。那么我可以根据 orderInfow 单元格的状态首先从ordered_medicines 中删除,然后才从irderinfo 中删除?

标签: sqloracleoracle-sqldeveloper

解决方案


推荐阅读