MySQL查询需求:筛选所有profile_sent列均非0的job_id
筛选所有profile_sent列均为非0值的job_id
方法一:使用NOT EXISTS子查询(匹配你需要的子查询实现方式)
SELECT DISTINCT job_id FROM your_table t1 WHERE NOT EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.job_id = t1.job_id AND t2.profile_sent = 0 );
逻辑说明:查询那些不存在同job_id下profile_sent为0的记录的job_id,正好满足“该job_id所有行的profile_sent均非0”的要求。
方法二:分组后用聚合函数筛选
方式1:通过最小值判断
SELECT job_id FROM your_table GROUP BY job_id HAVING MIN(profile_sent) > 0;
逻辑说明:按job_id分组后,只要该组内最小的profile_sent值大于0,就说明这个job_id下没有0值的记录。
方式2:统计0值的数量
SELECT job_id FROM your_table GROUP BY job_id HAVING COUNT(CASE WHEN profile_sent = 0 THEN 1 END) = 0;
逻辑说明:统计每组中profile_sent为0的行数,若数量为0则符合筛选条件。
注意:把代码里的
your_table替换成你的实际表名。
内容的提问来源于stack exchange,提问作者Ken Williams
相关产品推荐
相关产品推荐

