mysql—为特定id选择行,其中对应的列只提到一组值

agxfikkp  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(311)

我有一张table如下:

ID  | Value  | Other Columns...........| .......
-----------------------------------------------
ID1 | Value1 | ....................... | .......
ID1 | Value2 | ....................... | .......
ID2 | Value3 | ....................... | .......
ID3 | Value4 | ....................... | .......
ID3 | Value4 | ....................... | .......
ID3 | Value5 | ....................... | .......
ID4 | Value4 | ....................... | .......
ID4 | Value5 | ....................... | .......
ID5 | Value2 | ....................... | .......
ID5 | Value4 | ....................... | .......
ID5 | Value5 | ....................... | .......

value列可以有5种类型的值:value1到value5。我需要写一个查询,在那里我应该得到所有的id值只有value4和value5。例如:id3和id4。由于我是sql新手,我应该如何以优化的方式进行呢?

2skhul33

2skhul331#

你可以用 group by 以及 having . 一个简单的方法是:

select id
from t
group by id
having sum(case when value = 'value4' then 1 else 0 end) > 0 and
       sum(case when value = 'value5' then 1 else 0 end) > 0 and
       sum(case when value not in ('value4', 'value5') then 1 else 0 end) = 0;

条件正在计算 value 是给定 id . 这个 > 0 表示至少有一行具有该值。这个 = 0 说不能和 id 有价值。

nwo49xxi

nwo49xxi2#

我只是想让你大致了解一下这个问题。

Select * from table where value is value or value 4

相关问题