-3

我有一个包含users conversations conversation_user.

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

在这种情况下,user1并且user2正在进行对话。

在此处输入图像描述

4

3 回答 3

2

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

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

在此处查看小提琴。

于 2013-06-23T09:53:59.750 回答
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,则他们没有进行对话。否则他们就是。

于 2013-06-23T09:41:31.660 回答
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>
于 2013-06-23T09:42:49.823 回答