从连接表中选择子集的公共区别

时间:2012-10-05 13:04:09

标签: mysql sql

给出boothuser之间m-2-m关系的连接表

+-----------+------------------+
| booth_id  |          user_id |
+-----------+------------------+
|         1 |                1 |
|         1 |                2 |
|         1 |                5 |
|         1 |                9 |
|         2 |                1 |
|         2 |                2 |
|         2 |                5 |
|         2 |               10 |
|         3 |                1 |
|         3 |                2 |
|         3 |                3 |
|         3 |                4 |
|         3 |                6 |
|         3 |               11 |
+-----------+------------------+

如何获取用户ID子集之间通用的一组独特的booth记录?例如,如果我的user_id值为{{} 1}},我希望结果集只包含ID为1,2,3的{​​{1}},因为它是上面所有booth之间联接表中唯一的常见3

我希望我在MySQL中缺少一个关键字来实现这一点。我到目前为止最远的是使用booth,但这总是返回一个空的结果集(我相信我明白为什么会这样)

1 个答案:

答案 0 :(得分:1)

对此的SQL查询将是:

select booth_id from table1 where [user_id]
in (1,2,3) group by booth_id having count(booth_id) = 
(select count(distinct([user_id])) from table1 where [user_id] in (1,2,3))

如果这可以帮助您创建MySQL查询。