我有一个 MySQL 表,用于存储产品参数,例如:
productId | parameterValue
--------------------------
1 | 1
1 | 2
1 | 3
2 | 1
3 | 3
我需要的是选择与parameterValues 1 AND 2 AND 3
关联的不同productId。因此,我不能简单地使用 WHERE parameterValue IN (1,2,3)
,因为它会返回与任何这些值关联的 ProductId。
查询此问题最有效的方法是什么?该表有数十万行。
最佳答案
您可以通过过滤所需参数值的行来实现这一点,然后计算每个产品有多少个,并使用 HAVING
子句仅获取具有三个的产品(在您的情况下) )其中:
select productId
from yourTable
where parameterValue in (1, 2, 3)
group by productId
having count(distinct parameterValue) = 3
关于mysql - 选择与值组合关联的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44024292/