Mysql-为缺少的月份填充行

Mysql-为缺少的月份填充行,mysql,Mysql,天哪,这一定很简单,但我正在努力解决这个“填写缺失数据”的问题 我有一个表,其中包含以下列和一些插入的数据 TABLE year month payment 2014 3 100 2014 5 800 2014 9 200 我想从这张表中看到的是,从2014年起,它的付款价值将有一个完整的月范围 Month Payment 1 0 2 0 3 100 4 0 5

天哪,这一定很简单,但我正在努力解决这个“填写缺失数据”的问题

我有一个表,其中包含以下列和一些插入的数据

TABLE

year  month  payment
2014    3      100
2014    5      800
2014    9      200
我想从这张表中看到的是,从2014年起,它的付款价值将有一个完整的月范围

Month    Payment
  1        0
  2        0
  3       100
  4        0
  5       800

  ...

  12       0

我尝试在select中使用IFNULL,但失败得太厉害了。。。来自stackoverflow的搜索结果通常连接两个或多个表来处理信息。解决此问题的最快和最好的解决方案是什么?

对于缺少的月份,您可以使用包含所有月份的联合查询,并与您的表联接

SELECT 
t1.`year`,
t.`month`,
coalesce(t1.payment,0) payment
FROM
(SELECT 1 AS `month`
UNION 
SELECT 2 AS `month`
UNION 
....
SELECT 12 AS `month`
) AS t
LEFT JOIN your_table t1 on(t.`month` = t1.`month`)
WHERE ....

谢谢你的回答!只是想知道。。。当表中有一些记录或没有记录时,它是否适用于WHERE customer_id=1(假设表中有此列)?您如何解决在WHERE中使用它的问题?在其他专栏中使用where对我不起作用。