查询特定唯一ID的所有值是否相同的位置

问题描述 投票:0回答:1

我有下面提到的数据库:

id  Value
1   A
1   B
1   B
2   A
2   B
3   B
3   B

我想要

  1. 那些id只是那些对这些id的所有值都是“B”的地方。 (即在这种情况下id 3
  2. 在查询时使用id!=A的地方,但它给了我所有id都存在的值。
mysql sql
1个回答
2
投票

你可以使用group byhaving

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)的索引。

© www.soinside.com 2019 - 2024. All rights reserved.