我聊天参与者的表看起来像这样:GROUP BY chat_id - 返回只有当所有条件的行匹配
id chat_id participant_id
1 1 5
2 1 7
3 1 9
如果用户创建一个新的聊天,我们首先要确保一与所请求的参与者聊天并不存在,如果有,我们只会使用该聊天。
因此,我们假设我想与参与者5
,7
,9
和11
创建聊天。
在这种情况下,将不会返回任何内容,因为不存在包含所有这些成员的聊天,所以必须创建与新的chat_id
的新聊天。
然而,如果我们要创建只有参与者5
,7
,并9
的1
的chat_id
应返回聊天。
有没有一种有效的方式来构建一个查询来实现这一点,而不使用循环?
我想是这样的,但从来没有得到想要的结果:
SELECT chat_id FROM chat_participants WHERE participant IN(5,7,9) GROUP BY chat_id
有什么建议?
假设参与者不能上市在聊天中多次,但公平的假设。 (如果我们有5,7,7),当它不可能时,你会把它当作比赛来对待。但如果这种情况不能存在,那么增加不同的数量就是开销。 – xQbert
@xQbert是的,如果他/她添加重复的参与者的身份证明他/她必须管理数量和什么是我正在更新丢失 –
我不会更新。假设是公平的,假设是明显的,会降低绩效。只希望DanL知道这个假设;如果假设不好,该如何解决。 – xQbert