从Oracle DB中的两个表和Rownum条件的连接中删除行



使用Oracle DB学习PL/SQL,并尝试完成以下操作:

我有两个表A和b。我将它们加入ID,添加几个条件,然后尝试仅从表A中删除1000的表A的行。基本查询看起来像这样:

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;

最新更新