php - 如何选择只有两个参与者参与的对话?

标签 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

最佳答案

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。

顺便说一句,如果此查询未返回任何内容,则可能意味着您没有任何符合配置文件的对话。

关于php - 如何选择只有两个参与者参与的对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40816424/

相关文章:

php - 如何通过PHP中的关联数组将两个值传递给一个变量

Php:如何剪切字符串的特定部分?

php - 使用 PHP 获取特殊的 utf8 符号到 SQL/mySql 数据库

mysql - 无法 ping 通 AWS RDS 端点

mysql - 总是在 SQL 中的最后一个条目之后将新数据插入表中

C# - SQL - 读取数据库中的每一行,对行进行数据挖掘,然后将结果保存在另一个数据库中 - 如何提高速度

java - MySQL 列 'FullName' 不能为空

php - 限制php文本文件中的联系人

php - Laravel 和 Dropbox WebAuth : "Missing CSRF token in session"

php - "Trying to get property of non-object in"- 自定义 mysqli 类