mysql - SQL - 计数不返回零

标签 mysql sql

我正在运行此查询,它从一个表中选择几个字段并返回其他一些表中的计数。

我的问题:如果我的一个计数器字段计数为零,它不会返回数字 0,它只是空白 - 这是我想尝试解决的问题。

SELECT mem.member_id, mem.screen_name, mem.firstname, mem.lastname, mem.country_code, 
mem.joined, rep.rep as reputation, com.cnt as comments FROM members AS mem
LEFT OUTER JOIN (
    SELECT member_id, SUM(awarded_what) as rep
    FROM members_reputation
    GROUP BY member_id) rep
    ON mem.member_id = rep.member_id
LEFT OUTER JOIN (
    SELECT member_id, COUNT(comment_id) as cnt
    FROM blog_comments
    GROUP BY comment_id) com
    ON mem.member_id = com.member_id
GROUP BY mem.member_id
ORDER BY mem.joined DESC

我想要的是这样的:

Screen Name      | Comments
-----------------|--------------------
marty76          | 0
jonnyBoy12       | 0
adamApple        | 12

但是,我得到的却是这样的东西!

Screen Name      | Comments
-----------------|--------------------
marty76          | 
jonnyBoy12       | 
adamApple        | 12

使用我的服务器端语言可以很容易地解决这个问题,方法是用零替换空值。但我希望零直接来自 SQL,这样我就可以按计数排序。

任何建议都会很棒。

最佳答案

试试 IFNULL功能

SELECT mem.member_id, mem.screen_name, mem.firstname, mem.lastname, mem.country_code,  
mem.joined, rep.rep as reputation, IFNULL(com.cnt,0) as comments FROM members AS mem 
LEFT OUTER JOIN ( 
    SELECT member_id, SUM(awarded_what) as rep 
    FROM members_reputation 
    GROUP BY member_id) rep 
    ON mem.member_id = rep.member_id 
LEFT OUTER JOIN ( 
    SELECT member_id, COUNT(comment_id) as cnt 
    FROM blog_comments 
    GROUP BY comment_id) com 
    ON mem.member_id = com.member_id 
GROUP BY mem.member_id 
ORDER BY mem.joined DESC 

关于mysql - SQL - 计数不返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012890/

相关文章:

mysql - 优先考虑 MySQL 中的次要 ORDER BY 字段

mysql - 编码技巧

php - 如何匹配选择查询中的字符串数组?

sql - 将重复记录合并到 1 个字段中

python - 使用元素列表的 SQLAlchemy 查询

sql - 十进制数的 Oracle ceil

sql - 如何在 SQL 中排除每年的特定日期范围

mysql - SQL 用于查找一个值,该值的行最接近另一个值的所有唯一出现次数的一半?

mysql - 使用多个表删除并在子查询中重复表

PHP mysql 获取两个日期之间的减法