如果没有结果,mysql选择日期的默认值

标签 mysql

我有一个按天分组的付款表

select
 day(created),
 sum(payments.amount) 
from payments
group by day(created)

输出

day | amount
1   | 432
2   | 4567
5   | 345
6   | 2345
7   | 97

这很好,但我想在没有付款的日子里添加一些0

预期输出:

day | amount
1   | 432
2   | 4567
3   | 0
4   | 0
5   | 345
6   | 2345
7   | 97

最佳答案

由于您在付款表中没有所有日期,您可以执行以下操作:

select
    d,
    ifnull(sum(p.amount),0) sum_amount
from (
         select 1 as d
         union all 
         select 2
         union all 
         select 3
         union all 
         select 4
         union all 
         select 5
         union all 
         select 6
         union all 
         select 7
    ) d
    left join payments p 
    on day(p.created) = d.d
group by d
order by d

示例:http://sqlfiddle.com/#!9/cb09d1/2

关于如果没有结果,mysql选择日期的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42308498/

相关文章:

MySQL 基数与自动递增计数器

mysql - 如何使用 ActiveRecord 将 DISTINCT ON 与 mysql 一起使用

mysql - 当 flyway 进程崩溃时,Flyway 不处理隐式提交的语句

python - MySQL 和 Python 编程错误 : 1064 (42000)

ios - 来自 mySQL 数据库 iOS/Swift 的循环 URL

php - 选择查询以将一列作为mysql中的键

php - 可能的 apache/mysql/php 包装器吗?

php - 检查phonenumber是否相等,然后更新其他

php - 从数据库中找到最匹配的颜色

php - 将blob类型图像上传到数据库,我的代码说它正在上传图像但没有存储在数据库中