2014-10-16 6 views
0

두 테이블은 열 집합의 모든 값이

표를 고려할 때 동일한 경우에만 행을 삭제 {SQL :

Fields : 
- a_ID1 
- a_Status  
- a_Key 

표 B :

Fields : 
- b_ID 
- b_Status 
- FK_a_key 

삭제하는 방법이 있나요 다음 조건에 관한 두 테이블의 행 그룹 :
모든 행 삭제 FK_a_key = xxx and a_key = xxx 그러나 이 행의 e는 Status 필드가 "2"와 다른가요?

답변

0

트릭해야 not exists 통화의 몇 :

DELETE FROM a 
WHERE a_key = 'xxx' AND 
     NOT EXISTS (SELECT * 
        FROM a 
        WHERE a_key = 'xxx' AND a_status != 2) AND 
     NOT EXISTS (SELECT * 
        FROM b 
        WHERE FK_a_key = 'xxx' AND b_status != 2) 


DELETE FROM b 
WHERE b_key = 'xxx' AND 
     -- Frankly, both these conditions are are redundant - 
     -- they've been checked in the previous statement 
     NOT EXISTS (SELECT * 
        FROM a 
        WHERE a_key = 'xxx' AND a_status != 2) AND 
     NOT EXISTS (SELECT * 
        FROM b 
        WHERE FK_a_key = 'xxx' AND b_status != 2) 
관련 문제