检查两个用户是否属于同一个对话

时间:2013-06-23 09:38:09

标签: mysql sql

我的数据库包含users conversations conversation_user

现在我想知道两个用户是否正在进行对话。我怎样才能以聪明的方式做到这一点?

在这种情况下,user1user2正在进行对话。

enter image description here

3 个答案:

答案 0 :(得分:2)

这将列出用户1和用户2共有的所有conversation_id

SELECT   conversation_id
FROM     conversations
WHERE    user_id IN (1, 2)
GROUP BY conversation_id
HAVING   COUNT(DISTINCT user_id)=2

请参阅小提琴here

答案 1 :(得分:0)

select count('x') 
from 
  conversation_user x
where
  (x.userid1 = 1 and x.userid2 = 2) or  
  (x.userid1 = 2 and x.userid2 = 1)

如果此查询返回0,则表示他们没有进行对话。否则就是。

答案 2 :(得分:0)

自我加入可以做到:

SELECT c.conversation_id
FROM conversations c
JOIN conversations c2
    ON c.conversation_id=c2.conversation_id
WHERE c.user_id=<x> AND c2.user_id=<y>