2014-10-16 51 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的狀態字段與「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) 
相關問題