我有2个SQL表:Conversations
和Users
。对话有很多用户和用户有很多对话。所以我的联接表Conversations_users
包含两个字段:conversation_id
和user_id
。
现在我知道一些用户的ID,我想要检索所有这些用户在同一个对话中的对话。有人可以帮帮我吗?
答案 0 :(得分:1)
一种方法是按用户逐个过滤Conversations_users
表,逐个对话,然后过滤包含必要数量(不同)用户的结果组:
SELECT Conversations.*
FROM Conversations JOIN Conversations_users USING (conversation_id)
WHERE Conversations_users.user_id IN (1,2,3)
GROUP BY conversation_id
HAVING COUNT(DISTINCT Conversations_users.user_id) = 3
如果(conversation_id, user_id)
中的Conversation_users
保证唯一(例如,该表是PRIMARY KEY
),则可以使用COUNT(*)
而不是COUNT(DISTINCT Conversations_users.user_id)
){{1}}。