You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过两个用户ID查询对应的对话ID(基于关联表)

根据两个用户ID获取对话ID的SQL实现

你可以通过以下两种常见方法实现需求:

方法一:分组统计法

利用GROUP BY和HAVING子句筛选出同时包含两个用户的对话ID:

SELECT ud.dialog_id
FROM users_dialogs ud
WHERE ud.user_id IN (2, 7)
GROUP BY ud.dialog_id
HAVING COUNT(DISTINCT ud.user_id) = 2;

原理说明:

  • 先筛选出用户ID为2和7的所有对话关联记录
  • 按对话ID分组后,统计每组内的不同用户数量
  • 只保留用户数量等于2的分组,即两个用户都参与的对话

如果需要从dialogs表返回对话ID(结果一致,适合后续扩展字段):

SELECT d.id
FROM dialogs d
JOIN users_dialogs ud ON d.id = ud.dialog_id
WHERE ud.user_id IN (2, 7)
GROUP BY d.id
HAVING COUNT(DISTINCT ud.user_id) = 2;

方法二:多表连接法

通过两次关联users_dialogs表,直接匹配同时存在两个用户的对话:

SELECT d.id
FROM dialogs d
JOIN users_dialogs ud1 ON d.id = ud1.dialog_id AND ud1.user_id = 2
JOIN users_dialogs ud2 ON d.id = ud2.dialog_id AND ud2.user_id = 7;

原理说明:

  • 第一次连接筛选出用户2参与的对话
  • 第二次连接在这些对话中筛选出同时有用户7参与的记录
  • 最终返回的就是两个用户共同参与的对话ID

内容的提问来源于stack exchange,提问作者DisplayName

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:09:33