1

我使用的原因IFNULL是将空字段更改为 0。但我总是收到此错误:

错误代码:1054。“on 子句”中的未知列“inc.month_id”

这是我的Mysql查询:

    SELECT * FROM tbl_month
left joins 
(
   select ifnull(tbl_income.rentals,0) as rentals, ifnull(tbl_income.electric,0) as electric, ifnull(tbl_income.month_id,0) as month_id
   from tbl_income 
   where tbl_income.igp_id = 1
) as inc on tbl_month.month_id = inc.month_id;

编辑:我手动添加了所有列,但空字段没有被 0 替换。

输出: 在此处输入图像描述

4

2 回答 2

0

这是因为left join; 使用inner join或将其ifnull放在主选择中,而不是在子查询中:

SELECT 
  ifnull(inc.rentals,0) as rentals, 
  ifnull(inc.electric,0) as electric, 
  ifnull(inc.month_id,0) as month_id,
  ...
FROM tbl_month t1
left join tbl_income as inc on t1.month_id = inc.month_id;
于 2013-09-30T09:27:39.603 回答
-1

您遇到的问题是您没有将临时表“inc”中的列命名。

你有这个

ifnull('*',0)

但应该有

ifnull('*',0) as month_id.

笔记:

ifnull('*',0)将始终导致'*'.

如果您只想验证month_id列,您必须这样做

ifnull(month_id,0) as month_id

于 2013-09-30T09:10:44.757 回答