如何使用oracle在一个查询中删除多个表的记录

时间:2017-11-24 10:38:46

标签: sql oracle oracle11g oracle-apex-5

  

例如,我已经执行了这个sql查询,并给出了结果。   我想使用oracle查询删除这些结果。



 Select 
a.ENAME    ,
a.JOB,
a.MGR,
a.HIREDATE,
a.SAL,
b.DEPTNO,
b.DNAME,
b.LOC
from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10
DELETE FROM emp , dept 
WHERE a.DEPTNO=b.DEPTNO




1 个答案:

答案 0 :(得分:0)

没有任何命令可以从两个表中删除链接。但我提出两个方案。第一种情况可用于非父/子表。第二种情况可用于父/子表。

首先:收集所有常见PK 或表格的任何常见字段。 (当然你有一个共同的领域)。如下查询:

(Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10)

然后在一个事务中使用删除命令序列。

delete from dept where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10)
delete from emp where DEPTNO IN (Select a.DEPTNO from emp a , dept b where a.DEPTNO=b.DEPTNO and a.DEPTNO=10)

:使用CASCADE DELETE配置。 (仅适用于父母/子女表格)
如果无法控制副作用,此解决方案是有害的 在级联删除中,当删除父表中的记录时,将自动删除子表中的相应记录。