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

如何编写SQL查询统计bbs表中指定用户关联的唯一交互用户数

实现统计指定用户交互唯一用户数的SQL方案

核心思路是提取所有和目标用户交互的对方ID,去重后计数即可,可参考以下两种通用实现:

方案1:子查询合并去重(兼容所有主流SQL数据库)

SELECT COUNT(*) AS `count`
FROM (
    SELECT `from_id` AS interact_user FROM `bbs` WHERE `to_id` = ?
    UNION
    SELECT `to_id` AS interact_user FROM `bbs` WHERE `from_id` = ?
) AS interact_users

逻辑说明:

  • 第一个子查询取出所有给目标用户发消息的用户ID
  • 第二个子查询取出所有目标用户发消息给的用户ID
  • UNION会自动合并两个结果集并去重,外层直接统计行数即可,你给出的示例数据执行后结果正好为3,符合需求。

方案2:单查询分支判断(支持MySQL、PostgreSQL等主流数据库,写法更简洁)

SELECT COUNT(DISTINCT 
    IF(`from_id` = ?, `to_id`, `from_id`)
) AS `count`
FROM `bbs`
WHERE `to_id` = ? OR `from_id` = ?

逻辑说明:

  • 过滤出所有和目标用户相关的行后,通过分支判断取出每一行里和目标用户交互的对方ID
  • 直接对所有对方ID去重计数即可,三个参数均传入同一个目标用户ID即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:24:01