mysql - SQL查询检索对话记录

标签 mysql sql

我有 2 个 SQL 表:ConversationsUsers。对话有很多用户,用户也有很多对话。因此,我有一个连接表 Conversations_users,它有 2 个字段:conversation_iduser_id

现在我知道一些用户的 ID,并且我想检索所有这些用户位于同一对话中的对话。有人可以帮助我吗?

最佳答案

一种方法是按用户筛选 Conversations_users 表,按对话分组,然后筛选包含所需数量(不同)用户的结果组:

SELECT   Conversations.*
FROM     Conversations JOIN Conversations_users USING (conversation_id)
WHERE    Conversations_users.user_id IN (1,2,3)
GROUP BY conversation_id
HAVING   COUNT(DISTINCT Conversations_users.user_id) = 3

如果保证 (conversation_id, user_id)Conversation_users 中是唯一的(例如,它是该表的 PRIMARY KEY),则可以使用COUNT(*) 而不是(昂贵的)COUNT(DISTINCT Conversations_users.user_id)

关于mysql - SQL查询检索对话记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989778/

相关文章:

php - 尝试使用 WAMP 使用 PhP、MySQL 对外部文件进行函数调用

mysql - 对 MySQL 表进行分区后创建索引?

python - SQLALCHEMY:没有唯一约束与引用表的给定键匹配

sql - 获取有条件的数据

SQLite - 在范围内选择随机日期时间

mysql - 从 shell 查询 MySQL 数据库

php - DD-MM-YYYY 日期格式和 MySQL

php - 使用选择数据更新查询

mysql - 为什么插入语句不起作用?

mysql - 选择五个最高的不同记录