我有 2 个 SQL 表:Conversations
和 Users
。对话有很多用户,用户也有很多对话。因此,我有一个连接表 Conversations_users
,它有 2 个字段:conversation_id
和 user_id
。
现在我知道一些用户的 ID,并且我想检索所有这些用户位于同一对话中的对话。有人可以帮助我吗?
最佳答案
一种方法是按用户筛选 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)
。
关于mysql - SQL查询检索对话记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989778/