用于检索会话记录的SQL查询

时间:2014-02-24 13:52:37

标签: mysql sql

我有2个SQL表:ConversationsUsers。对话有很多用户和用户有很多对话。所以我的联接表Conversations_users包含两个字段:conversation_iduser_id

现在我知道一些用户的ID,我想要检索所有这些用户在同一个对话中的对话。有人可以帮帮我吗?

1 个答案:

答案 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}}。