如何选择仅涉及两位参与者的对话?

时间:2016-11-26 08:24:57

标签: php mysql

我需要检查参与者A和参与者B之间是否有任何对话私下。如果他们两人参与群组聊天,我不希望该会话。

那么如何构建我的查询,它将检查count(participant_id) == 2

我尝试了这个,但它给出了错误:

select conversation_id from chat where participant_id == A AND participant_id == B AND COUNT(participant_id) == 2

表结构 enter image description here

1 个答案:

答案 0 :(得分:2)

SELECT
      conversation_id
FROM chat
GROUP BY
      conversation_id
HAVING COUNT(DISTINCT participant_id) = 2
AND MAX(participant_id) IN (A,B)
AND MIN(participant_id) IN (A,B)

在尝试评估由聚合函数(如count)计算的值时,需要HAVING子句。您还需要计算对话中涉及的唯一ID。

顺便说一下,如果此查询没有返回任何可能意味着您没有任何符合个人资料的会话。