给出了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_id1,2,3,我希望结果集只包含idbooth3,因为它是上面联接表中所有booth之间唯一的公共user_id
我希望我在mysql中缺少一个关键字来处理这个问题。到目前为止,我所做的最深入的工作是使用... user_id = all (1,2,3),但这总是返回一个空的结果集(我相信我理解为什么会这样)。

最佳答案

对此的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查询。

关于mysql - 从连接表中选择子集的公共(public)区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12746870/

10-13 09:02