如何统计所有status均≥1的ID数量?
正确实现统计所有关联status≥1的ID数量的SQL方法
你的原始SQL语句SELECT count(ID)FROM table where all status >= 1存在语法逻辑错误,ALL运算符不能直接这样和字段搭配使用。下面提供两种可行的实现方式:
方法一:GROUP BY + HAVING 筛选
通过按ID分组,筛选出每组中最小status值都≥1的ID(因为最小的都满足,说明该ID下所有status都符合要求):
SELECT COUNT(ID) AS valid_id_count FROM your_table GROUP BY ID HAVING MIN(status) >= 1;
注:这里COUNT(ID)也可以替换为COUNT(*),因为GROUP BY ID后每个分组对应唯一ID。
方法二:子查询排除不符合条件的ID
先找出所有存在status<1的ID,再统计剩下的ID数量:
SELECT COUNT(DISTINCT ID) AS valid_id_count FROM your_table WHERE ID NOT IN ( SELECT ID FROM your_table WHERE status < 1 );
如果你的表中ID不会重复出现(每条记录对应唯一ID),可以去掉DISTINCT。
内容的提问来源于stack exchange,提问作者Shadowluv
相关产品推荐
相关产品推荐

