1

这个问题已经困扰我很长时间了,我一直无法真正弄清楚。

我想要的是找到匹配多个 option_ids 的所有产品,

例如:我想要所有具有选项 id 20 和 28 的产品 id。查询应该返回 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        |
---------------------------
4

3 回答 3

3
SELECT product_id 
FROM your_table 
WHERE option_id IN (20,28) 
GROUP BY product_id
having count(distinct option_id) = 2
于 2013-11-11T13:34:09.937 回答
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
于 2013-11-11T13:34:44.660 回答
0
SELECT product_id FROM table WHERE option_id IN (20,28) GROUP BY product_id
于 2013-11-11T13:33:25.263 回答