对话应用程序的MySQL问题

时间:2011-04-29 23:52:58

标签: mysql database

我有一个应用程序来管理网站上用户之间的对话。它可以进行一对一的对话,并在一次对话中拥有多个人。

这是mysql表的布局

对话
conversations_meta

conversations_meta表通过记录user_id和conversation_id将用户链接到会话。它还包含有关特定于对话中每个用户的对话的元信息。

我遇到的问题是检测是否已经存在与同一个人的对话。 例如,如果Eric Jason和bob之间的对话存在但可能已经过时并且用户忘记了它,然后尝试与相同的用户创建一个额外的对话,我想通知他们对话。

因此查询应查看conversations_meta表并比较user_id和conversation_id以查看是否已存在相同的会话。此外,我不希望它返回包含所有相同用户和其他用户的对话。 我在这里发布这个问题的主要原因是为了获得最快的查询来完成这项任务,因为会有成千上万的对话。

1 个答案:

答案 0 :(得分:0)

这个怎么样:

SELECT conversations_meta.conversations_id FROM conversations_meta  
where (conversations_meta.user_id=1) or (conversations_meta.user_id=2)
group by conversations_id HAVING count(*) = 2 

注意:这只是对话中只有2个人的情况。轻松扩展到3或更多的情况。