我有一张聊天参与者表,如下所示:
id chat_id participant_id
1 1 5
2 1 7
3 1 9
如果用户创建新聊天,我们首先要确保与所请求参与者的聊天尚不存在,如果存在,我们将只使用该聊天。
所以在这里假设我想与参与者聊天 5
, 7
, 9
, 和 11
.
在这种情况下,不会返回任何内容,并且会与新的 chat_id
进行新的聊天。必须创建,因为没有包含所有这些成员的聊天。
但是,如果我们想创建一个只有参与者的聊天 5
, 7
, 和 9
, chat_id
的 1
应该归还。
是否有一种有效的方法来构建查询以在不使用循环的情况下实现这一目标?
我试过这样的东西,但没有得到想要的结果:
SELECT chat_id FROM chat_participants WHERE participant IN(5,7,9) GROUP BY chat_id
有什么建议吗?
你只需要像这样添加你请求的参与者总数的条件
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
我是一名优秀的程序员,十分优秀!