gpt4 book ai didi

mysql - 从包含特定用户的图表中获取 chat_id

转载 作者:搜寻专家 更新时间:2023-10-30 20:51:41 26 4
gpt4 key购买 nike

数据库设计:

/image/ynByR.png

我想确定 2 个特定用户所属的 chat_iduser_id 是已知的。例如,用户 25 和用户 28 属于 chat_id 1。这些也属于与 chat_id 2 的群聊。但是,应该确定只有这两个用户拥有的chat_id。我可以使用什么 SQL 查询?我试过如下:

[SELECT chat_id FROM `chat_partners` WHERE private=1 AND (F_user_id=100 OR F_user_id=50) GROUP BY chat_id HAVING count(*)=2;][1]

然而,当我指定了两个不存在的 user_id 时,我也得到了 chat_id 1

最佳答案

您的尝试看起来并不遥远,但对每个用户的检查需要在 HAVING 子句中进行,而不是 WHERE 子句:

SELECT chat_id
FROM chat_partners
WHERE private = 1
GROUP BY chat_id
HAVING SUM(CASE WHEN F_user_id = 25 THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN F_user_id = 28 THEN 1 ELSE 0 END) > 0

这将返回具有用户 25 和 28 的每个 chat_id。但是,其他用户也可能存在。如果您只想要专门包含这两个用户的聊天(例如私有(private)聊天),那么您可以在 HAVING 子句中添加一个额外的术语:

HAVING SUM(CASE WHEN F_user_id <> 25 AND F_user_id <> 28 THEN 1 ELSE 0 END) = 0

关于mysql - 从包含特定用户的图表中获取 chat_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com