通过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);
当我尝试操纵一个视图时,这显然不起作用:“对该视图进行数据操纵操作不合法”
我该如何重写呢?
答案 0 :(得分:1)
您只能从表中进行远程操作,现在需要进行联接。如果需要,可以在where子句中处理它
您删除的对帐单可能是
DELETE from SCHEMA.TABLEA a
where a.id in (select b.id from SCHEMA.TABLEB b)
and par=0 AND ROWNUM <= 1000
答案 1 :(得分:0)
您可以编写简单的查询来检查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;