我有一个包含users
conversations
conversation_user
.
现在我想知道两个用户是否正在进行对话。我怎样才能以聪明的方式做到这一点?
在这种情况下,user1
并且user2
正在进行对话。
这将列出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
请在此处查看小提琴。
select count('x')
from
conversation_user x
where
(x.userid1 = 1 and x.userid2 = 2) or
(x.userid1 = 2 and x.userid2 = 1)
如果此查询返回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>