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

时间:2018-03-04 14:57:06

标签: mysql sql

我有下面提到的数据库:

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

我想

  1. 只有在那些id的所有值都是" B"的情况下才是那些id。 (即本例中为3
  2. 在查询时使用id!=A,但它会为我提供所有值都存在的值。

1 个答案:

答案 0 :(得分: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)上的索引。