从多对多表中选择

时间:2017-10-29 18:55:07

标签: sql many-to-many

我有下一个名为option_to_name数据的表:

+-----------+---------+
| option_id | name_id |
+-----------+---------+
| 1         | 1       |
| 1         | 2       |
| 2         | 2       |
| 3         | 2       |
+-----------+---------+

我需要在name_id中选择与12值相关的option_id。我尝试使用WHERE IN,但它的工作方式与has 1 or has 2类似。

SELECT name_id FROM option_to_name WHERE option_id IN (1, 2)

有没有办法选择name_id中同时包含12值的option_id

1 个答案:

答案 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;