繁体   English   中英

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

[英]How to delete record for multiple table in one query using oracle

例如,我已经执行了此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 

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

首先 :收集所有常用的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配置。 (仅适用于父/子表)
如果无法控制副作用,则此解决方案是有害的。
在层叠删除中,当删除父表中的记录时,子表中的相应记录将被自动删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM