2013-05-06 22 views
1

我需要獲取表A的所有元素m_id,其中m_active爲= N,並且表B中的相應元素具有ALL v_active = N。mysql如何從表A中的所有相應項目中選擇項目滿足條件

M_ID是表B.

在下面的例子中,我所尋求的是M_ID = 2且以及M_ID = 4既滿足作爲m_active = N的條件,並且具有ALL v_active = N外鍵。

我該怎麼做?

由於

表A例如:

m_id  m_active 
1   Y 
2   N 
3   Y 
4   N 

表B示例:

v_id m_id v_active 
1  1   N 
2  1   Y 
3  1   N 
4  2   N 
5  2   N 
6  2   N 
7  3   N 
8  3   Y 
9  3   Y 
10  4   N 

回答

3

試試這個:

SELECT * FROM A 
WHERE m_active='N' 
AND NOT EXISTS (
    SELECT * FROM B 
    WHERE B.m_id=A.m_id 
    AND B.v_active<>'N' 
); 
+0

非常感謝ahoo,我炸我的大腦對於上一段時間。非常直截了當。 – BernardA 2013-05-06 17:32:58

2
SELECT * 
FROM a 
WHERE m_active = 'N' 
     AND m_id NOT IN 
     (
     SELECT m_id 
     FROM b 
     WHERE v_active <> 'N' 
     ) 

這也會從a選擇所有項具有在b沒有相應的條目(因此所有00條目不活動)。這可能是也可能不是你想要的。

相關問題