在Mysql中识别具有条件的特定id

时间:2018-02-22 08:42:18

标签: mysql sql

我有这个问题:

select a.id,b.value from A1 a
left join B1 b
on a.de=b.ce;

这给了我这样的输出:

id   value
1    A
1    B
1    B
3    A
3    B
4    B
4    B

对于每个ID,必须有一个Value为“A”,并且应该超过Value为“B”。

现在我希望得到Value仅为“B”的那些ID。

3 个答案:

答案 0 :(得分:1)

使用GROUP BY ..和HAVING子句仅获取仅具有B值的特定ID

SELECT
        a.id
FROM A1 a
LEFT JOIN B1 b on a.de=b.ce
GROUP BY a.id
HAVING COUNT(DISTINCT b.value) = 1 AND
       COUNT(DISTINCT case when b.value = 'B' then b.value end) = 1

答案 1 :(得分:0)

您可以使用not exists运算符:

SELECT a.id,b
FROM   A1 a
WHERE  NOT EXISTS (SELECT *
                   FROM   B1 b
                   WHERE  a.de = b.ce AND b.value <> 'B')

答案 2 :(得分:0)

select a.id,b.value from A1 a
left join B1 b
on a.de=b.ce AND b.value = 'B';

尝试查询。