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

如何修正HAVING COUNT语句以查询无点赞、评论操作的用户ID

原SQL失效原因

COUNT() 函数的统计规则是仅跳过NULL值,你写的e.action = 'like'是布尔表达式,无论返回真还是假都属于非NULL值,只要用户存在任意行为记录,两个COUNT的统计结果就至少为1,永远不可能等于0,因此逻辑无法生效。

可行修改方案

方案1:分组聚合写法(语法简洁,适合小表场景)

可以利用SUM统计匹配行数,或者利用COUNT跳过NULL的特性改写:

SELECT e.user_id
FROM event e
GROUP BY e.user_id
HAVING SUM(CASE WHEN e.action IN ('like', 'comment') THEN 1 ELSE 0 END) = 0

也可以拆分条件写:

SELECT e.user_id
FROM event e
GROUP BY e.user_id
HAVING COUNT(IF(e.action = 'like', 1, NULL)) = 0 
AND COUNT(IF(e.action = 'comment', 1, NULL)) = 0

方案2:子查询写法(性能更优,适合大表场景)

用NOT EXISTS匹配到用户存在点赞/评论行为就直接跳过,不需要全表分组,执行效率更高:

SELECT DISTINCT e1.user_id
FROM event e1
WHERE NOT EXISTS (
    SELECT 1 FROM event e2 
    WHERE e2.user_id = e1.user_id 
    AND e2.action IN ('like', 'comment')
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:57:02