如何在该SQL查询中正确使用WHERE子句筛选COUNT=0的结果?
解决只获取COUNT=0的SQL查询结果问题
你的原查询已经通过左连接关联了users和photos表,并统计了每个用户对应的照片数量,但要筛选出照片数量为0的用户,只需在分组后添加HAVING子句做过滤即可:
SELECT username, COUNT(user_id) AS COUNT FROM users LEFT JOIN photos ON users.id = photos.user_id GROUP BY username HAVING COUNT(user_id) = 0 ORDER BY COUNT ASC;
原理说明:
LEFT JOIN会保留users表中所有记录,没有对应照片的用户,photos.user_id字段会是NULLCOUNT(user_id)仅统计非NULL的记录数,因此无照片的用户统计结果为0HAVING子句用于分组后过滤统计结果,而WHERE是分组前过滤数据,这里必须用HAVING来筛选分组后的统计值
你也可以替换为COUNT(photos.id)或COUNT(photos.user_id),效果完全一致——只要用户无对应照片,这些关联字段都是NULL,COUNT会自动忽略空值。
内容的提问来源于stack exchange,提问作者Otoniel
相关产品推荐
相关产品推荐

