我有一个表oc_product_option_value
,其中是数据:
product_id | option_value_id |
------------------------------
2262 | 78 |
2262 | 37 |
2263 | 70 |
2263 | 78 |
2264 | 37 |
2264 | 30 |
所以,我想只获得product_id = 2262
,因为它有option_value_id = 78 and 37
。另一种产品不匹配,因为它们只有这些数字中的一种。
答案 0 :(得分:3)
将HAVING
与GROUP BY
一起使用。
<强>查询强>
select `product_id`
from `oc_product_option_value`
where `option_value_id` in (78,37)
group by `product_id`
having count(*) = 2;
答案 1 :(得分:3)
如果您的重复条目与COUNT
相同,则可以DISTINCT
与option_vale_id
一起使用,
SELECT product_id
FROM oc_product_option_value
WHERE option_value_id IN (37, 78)
GROUP BY product_id
HAVING COUNT(DISTINCT option_value_id) >= 2;