我有下一个名为option_to_name
数据的表:
+-----------+---------+
| option_id | name_id |
+-----------+---------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 3 | 2 |
+-----------+---------+
我需要在name_id
中选择与1
和2
值相关的option_id
。我尝试使用WHERE IN
,但它的工作方式与has 1 or has 2
类似。
SELECT name_id FROM option_to_name WHERE option_id IN (1, 2)
有没有办法选择name_id
中同时包含1
和2
值的option_id
?
答案 0 :(得分:1)
你很亲密。只需添加一些聚合:
SELECT name_id
FROM option_to_name
WHERE option_id IN (1, 2)
GROUP BY name_id
HAVING COUNT(DISTINCT option_id) = 2;