删除语句中的错误::查询失败

时间:2011-09-15 10:20:11

标签: sql oracle oracle10g oracle11g

我要求我要根据表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' 
      );

请建议

2 个答案:

答案 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,并从两个表中轻松删除。