这个问题一直困扰着我很长一段时间,而且我从来没有真正弄明白这一点。
我想要的是找到所有匹配多个option_ids的产品,
例如:我希望所有产品ID都具有选项ID为20和28.查询应该返回2个结果。产品ID 1和4并且不返回id 3,因为它只匹配其中一个选项ID,而不是两者都匹配。
| product_id | option_id |
---------------------------
| 1 | 20 |
| 1 | 24 |
| 1 | 28 |
| 2 | 28 |
| 3 | 19 |
| 3 | 20 |
| 3 | 28 |
| 4 | 28 |
| 4 | 30 |
---------------------------
答案 0 :(得分:2)
SELECT product_id
FROM your_table
WHERE option_id IN (20,28)
GROUP BY product_id
having count(distinct option_id) = 2
答案 1 :(得分:1)
使用HAVING
子句:
SELECT
product_id,
COUNT(DISTINCT option_id) AS option_count
FROM t
WHERE
option_id IN (20, 28)
GROUP BY
product_id
HAVING
option_count=2
答案 2 :(得分:0)
SELECT product_id FROM table WHERE option_id IN (20,28) GROUP BY product_id