我有这个问题:
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。
答案 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';
尝试查询。