使用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;