像IN这样的SQL查询

时间:2017-09-12 08:09:38

标签: mysql

我有一个表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。另一种产品不匹配,因为它们只有这些数字中的一种。

2 个答案:

答案 0 :(得分:3)

HAVINGGROUP 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相同,则可以DISTINCToption_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;