我要求我要根据表A中的条件选择行,并且必须删除表B.
例如,EMP和EMP1是两个表
Merge into emp1 a
using (select * from emp) b
on (a. empno =b.empno)
WHEN MATCHED THEN DELETE
where(b.LOC='NEW YORK');
以上查询导致错误。
如果我使用Where exists
,则会在表A
中删除所有行,这不是正确的解决方案。
delete from emp1 a
where exists
( select null
from emp b
where a. empno =b.empno
and b.LOC='NEW YORK'
);
请建议
答案 0 :(得分:3)
DELETE FROM emp1 a
WHERE a.empno IN
( SELECT b.empno
FROM emp b
WHERE b.LOC = 'NEW YORK'
);
答案 1 :(得分:0)
我不熟悉MERGE语句,但我会说emp b没有正确声明,因为b在括号之外。
另外,我建议首先制作一个视图(或临时连接的表),以便在执行DELETE命令之前能够看到哪些项匹配。然后,您可以根据视图使用DELETE,并从两个表中轻松删除。