[英]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.