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

MySQL关联子查询问题:筛选满足特定发帖量条件的活跃用户

修正后的MySQL查询语句

方法一:使用相关子查询

SELECT u.*
FROM users u
WHERE u.active = 1
  AND (
    SELECT COUNT(p.id)
    FROM posts p
    WHERE p.`user` = u.user_id
      AND p.`time` BETWEEN 1000 AND 2000
  ) >= 5
LIMIT 0, 10;

逻辑说明:对每个活跃用户(active=1),通过子查询统计其在1000-2000秒时段内的发帖数量,筛选出发帖数≥5的用户。

方法二:使用JOIN+分组筛选(性能更优)

SELECT u.*
FROM users u
JOIN posts p ON p.`user` = u.user_id
WHERE u.active = 1
  AND p.`time` BETWEEN 1000 AND 2000
GROUP BY u.user_id
HAVING COUNT(p.id) >= 5
LIMIT 0, 10;

逻辑说明:先关联用户表和帖子表,过滤出活跃用户及指定时段的帖子;按用户ID分组后,通过HAVING子句筛选发帖数≥5的用户。若users.user_id是主键,该写法符合MySQL规范(开启ONLY_FULL_GROUP_BY时也可正常执行)。

提示:如果posts表数据量较大,建议给user和time字段创建联合索引,可大幅提升查询效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:29:56