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

如何用GROUP BY+HAVING语句筛选活跃照片数超6的用户或判断其存在性?

解决活跃照片数量超过6张的用户查询问题

原SQL的问题在于错误地将active字段加入了分组条件,这会导致同一个用户若存在活跃和非活跃照片时被拆分分组,且当前的having条件无法直接筛选出活跃照片总数超过6的用户。

修改后的SQL语句(推荐写法)

SELECT user_id, COUNT(1) AS active_photo_count
FROM exp_content.photos_v4
WHERE active = True  -- 先过滤出所有活跃照片,提升查询效率
GROUP BY user_id     -- 仅按用户ID分组统计
HAVING COUNT(1) > 6  -- 筛选活跃照片数量超过6的用户

另一种写法(无需提前过滤,直接在分组后判断)

如果业务上需要保留分组时的活跃状态判断,也可以采用此写法,但执行效率略低于上面的方案:

SELECT user_id, COUNT(1) AS active_photo_count
FROM exp_content.photos_v4
GROUP BY user_id, active
HAVING active = True AND COUNT(1) > 6

补充:仅判断是否存在此类用户

如果只需要确认是否有符合条件的用户,无需具体ID和数量,可以用EXISTS子句简化查询:

SELECT EXISTS (
    SELECT 1
    FROM exp_content.photos_v4
    WHERE active = True
    GROUP BY user_id
    HAVING COUNT(1) > 6
) AS has_users_with_more_than_6_active_photos

该查询会返回True或False,直接给出是否存在目标用户的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:47:09