我正在运行此查询,它从一个表中选择几个字段并返回其他一些表中的计数。
我的问题:如果我的一个计数器字段计数为零,它不会返回数字 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/