我有下面提到的数据库:
id Value
1 A
1 B
1 B
2 A
2 B
3 B
3 B
我想
3
)id!=A
,但它会为我提供所有值都存在的值。答案 0 :(得分:2)
您可以使用group by
和having
:
select id
from t
group by id
having min(value) = max(value) and min(value) = 'B';
如果你有一个单独的id表,这可能会更快:
select i.id
from ids i
where not exists (select 1 from idvalues iv where iv.id = i.id and iv.value <> 'B') and
exists (select 1 from idvalues iv where iv.id = i.id and iv.value = 'B'); -- at least one B
这可以利用idvalues(id, value)
上的索引。