天哪,它必须是如此简单,但我正在为“填写缺失的数据”问题而苦苦挣扎。
我有一个表,该表具有以下带有一些插入数据的列。
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 ....
Fiddle Demo