2011-09-15 16 views
1

テーブルAとテーブルBの条件に基づいて選択された行を削除する必要があるという要件があります。例EMPおよびEMP1についてエラー:削除ステートメントでクエリが失敗する

2つのテーブル

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' 
    ); 

答えて

3
DELETE FROM emp1 a 
WHERE a.empno IN 
     (SELECT b.empno 
     FROM emp b 
     WHERE b.LOC = 'NEW YORK' 
    ); 
0

を提案してください私は、MERGE文に精通していないですが、私はbが括弧の外にあるので、EMP Bが適切に宣言されていないことを言うだろう。

また、最初にDELETEコマンドを実行する前にどの項目が一致しているかを確認できるビュー(または一時的に結合された表)を作成することをお勧めします。次に、ビューに基づいてDELETEを使用して、両方のテーブルから簡単に削除できます。

関連する問題