我的数据库包含users
conversations
conversation_user
。
现在我想知道两个用户是否正在进行对话。我怎样才能以聪明的方式做到这一点?
在这种情况下,user1
和user2
正在进行对话。
答案 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>