mysql如果没有结果,则选择日期的默认值
我有一个按天分组的付款表mysql如果没有结果,则选择日期的默认值,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
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
此处示例:您的表中可能没有特定日期的数据,因此您不能要求引擎返回该数据。 它根本不知道人类的日历:-)
因此,您必须回顾性地为这些天生成带有零的存根记录,或者使用@bernie建议的方法(这种特殊方式),或者在永久表中具体化,保存天数从1到31 可能重复检查此答案:不,我没有付款表中的所有日期,但我需要返回它们,就像它们是一样,如果它们是empty@BlairAnderson:根据您的评论,请参见编辑后的答案。