繁体   English   中英

从两个表的联接中删除行以及Oracle DB中的rownum条件

[英]Deleting rows from a join of two tables and rownum condition in Oracle DB

通过Oracle DB学习PL / SQL并尝试完成以下任务:

我有两个表a和b。 我将它们加入id上,添加多个条件,然后尝试仅从表a中以1000的批处理大小删除结果行。基本查询如下所示:

DELETE (SELECT * 
        FROM SCHEMA.TABLEA a 
             INNER JOIN SCHEMA.TABLEB b ON a.b_id = b.id 
        WHERE par=0 AND ROWNUM <= 1000);

当我试图操纵一个视图时,这显然不起作用:“数据操纵操作对此视图不合法”

我该如何重写?

您只能从表远程访问,现在需要进行联接。 如果需要,可以在where子句中处理它

您删除语句可能是例如

DELETE from SCHEMA.TABLEA a
where a.id in (select b.id from SCHEMA.TABLEB b)
and par=0 AND ROWNUM <= 1000

您可以编写简单查询,以检查TABLEB中是否存在需要删除的TABLEA中的行。

DELETE
FROM schema.tablea a
WHERE par = 0
AND   EXISTS (SELECT 1 FROM schema.tableb b WHERE a.b_id = b.id)
AND   rownum <= 1000;

暂无
暂无

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

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