0

我有三张桌子。

表A###(代码、值是组合主键)

Code    Value

1     |   b

1     |   c

3     |   c

表 B

Value

b

表 C

Value

c

我想从表 A 中写一个“代码”查询。

条件是“代码”应包含值“c”。

如果“代码”包含值“b”,则不应查询此代码。(即代码1有值b和值c,所以需要排除代码1)

但我无法进行该查询。

预期结果可能是“3”

我想使用 intersect 但 MySql 尚不包含此功能。所以我尝试了一些代码。我确定我的代码有问题,但我不知道如何修复它。

SELECT DISTINCT A.*
FROM A B C
WHERE A.Value IN
    (SELECT Value FROM B)
AND A.Value NOT IN
    (SELECT Value FROM C);

你能给我一些关于我的问题的提示吗?

4

1 回答 1

0

问题是您要加入 a、b 和 c。你几乎明白了。

select distinct a.value
from a
where a.value in (select value from b)
and a.value not in (select value from c)

或者你可以使用join

select * 
from a 
inner join b where b.value = a.value
    and not in (select value from c)
于 2019-10-23T02:19:58.147 回答