我认为这很容易,但是我需要一些帮助来解决它:
id product option suboption
-----------------------------------
118 A 1 1
119 A 2 2
120 A 3 1
121 B 1 2
122 B 2 2
123 B 3 1
124 C 1 1
125 C 2 2
126 C 3 1
我需要找到所有唯一的产品,其中对于选项= 1然后子选项= 1,对于选项= 2然后子选项= 2,对于选项= 3然后子选项= 1。
在此示例中,满足我的要求的是产品A和C。
如何查询?
答案 0 :(得分:3)
您可以使用group by
和having
。这是一种方法:
select product
from t
where (option, suboption) in ( (1, 1), (2, 2), (3, 1) )
group by product
having count(distinct option) = 3;
在您的示例数据中,每个产品只有一个选项。如果是这种情况,请使用:
having count(*) = 3
代替count(distinct)
。
答案 1 :(得分:1)
您可以按产品分组:
select
product
from tablename
group by product
having
sum(option = 1 and suboption = 1) > 0
and
sum(option = 2 and suboption = 2) > 0
and
sum(option = 3 and suboption = 1) > 0