使用ISNULL和ALIAS时'on子句'中的未知列

时间:2013-09-30 09:06:10

标签: mysql

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

  

错误代码:1054。'on clause'

中的未知列'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替换。

输出: enter image description here

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:-1)

您遇到的问题是您没有在临时表'inc'中命名该列。

你有这个

ifnull('*',0)

但应该

ifnull('*',0) as month_id

注意:

ifnull('*',0)始终会'*'

如果您只想验证month_id列,则必须按照此类

进行验证

ifnull(month_id,0) as month_id