若想快,还是以过程调用好declare str varchar(100); begin str:='delete from TBLA a where (a_col, b_col) in (select a_col,b_col from TBLB)'; execute immediate str; end; / 注意:先赋权限 grant delete any table to user_name;
declare str varchar(100); begin str:='delete from TBLA a where exists (select 'x' from TBLB where a_col=a.a_col and b_col=a.b_col)'; execute immediate str; end;
DELETE FROM A WHERE A_COL IN (SELECT A_COL,B_COL FROM A INTERSECT SELECT A_COL,B_COL FROM B);
in比exists慢
str varchar(100);
begin
str:='delete from TBLA a where (a_col, b_col) in (select a_col,b_col from TBLB)';
execute immediate str;
end;
/
注意:先赋权限 grant delete any table to user_name;
str varchar(100);
begin
str:='delete from TBLA a where exists
(select 'x' from TBLB where a_col=a.a_col and b_col=a.b_col)';
execute immediate str;
end;
A_COL IN (SELECT A_COL,B_COL FROM A
INTERSECT
SELECT A_COL,B_COL FROM B);
当B表存在删A,OVER。