首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GROUP BY chat_id -仅当所有条件的行都匹配时才返回

GROUP BY chat_id -仅当所有条件的行都匹配时才返回
EN

Stack Overflow用户
提问于 2017-04-20 22:06:18
回答 2查看 42关注 0票数 0

我有一个聊天参与者表,如下所示:

代码语言:javascript
复制
id         chat_id          participant_id
1          1                5
2          1                7
3          1                9

如果用户创建了新的聊天,我们首先要确保与请求的参与者的聊天还不存在,如果存在,我们将只使用该聊天。

因此,假设我想要创建与参与者57911的聊天。

在这种情况下,将不会返回任何内容,并且必须创建具有新chat_id的新聊天,因为没有包含所有这些成员的聊天。

但是,如果我们只想创建一个参与者为579的聊天,则应该返回1chat_id

有没有一种有效的方法可以在不使用循环的情况下构造查询来实现这一点?

我尝试了这样的方法,但从未得到预期的结果:

代码语言:javascript
复制
SELECT chat_id FROM chat_participants WHERE participant IN(5,7,9) GROUP BY chat_id

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-20 22:09:57

您只需添加条件,并按如下方式添加您请求的参与者总数

代码语言:javascript
复制
SELECT chat_id FROM chat_participants WHERE participant IN(5,7,9) GROUP 
BY chat_id having count(chat_id) = 3

如果你像IN(5,7,9,11)一样通过,那么你的条件将是having count(chat_id) = 4

票数 2
EN

Stack Overflow用户

发布于 2017-04-20 22:15:32

代码语言:javascript
复制
select chat_id
from
(
select chat_id, group_concat(participant order by participant, ',') as gc
from chat_participants
where chat id in (select chat_id from chat_participants where participant IN(5,7,9))
group by chat_id 
) x1
where x1.gc = '5,7,9'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43521865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档