mysql - 返回 NULL 时在 GroupByMonth 中获取 0

标签 mysql

我正在尝试使用 mysql 获取值,但在没有值的特定月份它不会给出 0...

我尝试了 IFNULL,但结果相同,并且没有为空月返回 0。

 SELECT IFNULL(COUNT(`bileti_id`),0) FROM `wp_biletistatus` WHERE
 `user_id`= 1 and `status`=1 GROUP BY MONTH(`date`) ORDER BY `date` ASC
 Limit 10

这也是我想获得的几个月的查询:

 SELECT MONTHNAME(`date`) FROM `wp_biletistatus` WHERE `user_id`= 1
 GROUP BY MONTH(`date`) ORDER BY `date` ASC Limit 10

谁能帮助我如何让没有值(value)的月份为 0。

最佳答案

您在没有值(value)的月份没有得到零的原因是因为它根本不存在。例如,您需要有一个固定值或至少一个包含所有月份列表的子查询。

SELECT months.MonthNum,
    COUNT(a.bileti_id) 
FROM    (
    SELECT 1 AS MonthNum UNION ALL SELECT 2 UNION ALL
    SELECT 3  UNION ALL SELECT 4 UNION ALL
    SELECT 5  UNION ALL SELECT 6 UNION ALL
    SELECT 7  UNION ALL SELECT 8 UNION ALL
    SELECT 9  UNION ALL SELECT 10 UNION ALL
    SELECT 11  UNION ALL SELECT 12
    ) months
    LEFT JOIN wp_biletistatus a
        ON months.MonthNum = MONTH(a.date)
WHERE a.user_id= 1 and a.status=1 
GROUP BY months.MonthNum  
ORDER BY months.MonthNum 

关于mysql - 返回 NULL 时在 GroupByMonth 中获取 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026965/

相关文章:

mysql - 将 Rails 4 与远程 MySQL 数据库连接

mysql - docker-compose up 后如何执行脚本?

mysql - 防止 count() 在 mysql 中返回 "NULL"

php - 回复部分的逻辑如何与 PHP 和 MySQL 一起工作?

php - 使用 mysqli 中的准备语句检索行结果

mysql - #1271 - 操作 'UNION' 的排序规则混合非法

mysql - 在一个字段上进行二进制字符串搜索

mysql - 使用unixodbc驱动程序连接mysql,默认数据库不起作用

mysql - 将数组存储在数据库中

php - 挑选随机获胜者