选择与值组合关联的ID

时间:2017-05-17 12:01:24

标签: mysql

我有一个MySQL表,我存储产品参数,如:

productId | parameterValue
--------------------------
1         | 1
1         | 2
1         | 3
2         | 1
3         | 3

我需要选择与parameterValues 1 AND 2 AND 3相关联的不同productIds。所以我不能简单地使用WHERE parameterValue IN (1,2,3),因为它会返回与这些值相关联的productIds。

查询此问题最有效的方法是什么?该表有数十万行。

1 个答案:

答案 0 :(得分:1)

您可以通过过滤所需参数值的行来计算,然后计算每个产品的数量,并使用HAVING子句仅获取具有三个(在您的情况下)的产品:

select  productId
from    yourTable
where   parameterValue in (1, 2, 3)
group by productId
having   count(distinct parameterValue) = 3