给出了booth
和user
之间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,2,3
,我希望结果集只包含idbooth
的3
,因为它是上面联接表中所有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/