mysql如何从表A中选择项目,其中表B中的所有相应项目满足条件

时间:2013-05-06 16:59:45

标签: mysql

我需要获取表A中m_active = N的所有元素m_id,并且表B中的相应元素具有ALL v_active = N.

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 

2 个答案:

答案 0 :(得分: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'
);

答案 1 :(得分:2)

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

这也将选择ab中没有相应条目的所有条目(因此所有00条目都处于非活动状态。这可能是也可能不是你想要的。