首页 > 解决方案 > SELECT 在同一列和 UNIQUE 值上具有多个 WHERE 条件

问题描述

我认为这很容易,但我需要一些帮助来解决它:

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。

我该怎么做这个查询?

标签: mysqlsql

解决方案


您可以使用group byhaving。这是一种方法:

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).


推荐阅读