Mysql - 填充缺少月份的行

时间:2014-08-18 07:45:04

标签: 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       800

  ...

  12       0

我尝试在选择中使用IFNULL但是失败如此糟糕......来自stackoverflow的搜索结果通常会连接两个或多个表来操纵信息。什么是解决这个问题的最快和最好的解决方案?

1 个答案:

答案 0 :(得分:3)

对于缺少的月份,您可以拥有所有月份的联合查询并加入您的表格

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 ....

Fiddle Demo