如何完成此查询功能?

时间:2019-10-23 02:04:12

标签: mysql

我有三个桌子。

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

Code    Value

1     |   b

1     |   c

3     |   c

表B

Value

b

表C

Value

c

我想从表A中编写对“代码”的查询。

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

如果“代码”包含值“ b”,则不应查询此代码。 (也就是说,代码1具有值b和值c,因此需要排除代码1)

但是我无法进行该查询。

预期结果可能是“ 3”

我想使用相交,但是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);

您能给我一些有关我的问题的提示吗?

1 个答案:

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