1

我有这个查询,我在 mysql 中得到错误

错误代码:1054。“字段列表”中的未知列“calc_diff_free”

我理解这个问题,但我怎样才能在不改变太多的情况下使用这个专栏

我过滤了查询以隐藏一些数据并帮助你们更好地阅读查询

insert into ranking_1 (difference_free)
(
 select 
 f.ranking, rc.ranking,
(-1*(f.ranking-rc.ranking)) as calc_diff_free
     from base_testing.ranking_temp f
     left join ranking_1 rc
     on f.id=rc.id
     where 1
 ) 
on duplicate key update difference_free=calc_diff_free

谢谢你的帮助!!

4

3 回答 3

1

查询中的on duplicate key update子句超出了声明列的选择项的范围calc_diff_free

您可能需要重新编写查询以将其置于范围内。

于 2012-08-30T12:46:42.643 回答
1

尝试这样的事情,

insert into ranking_1 (difference_free)
select -1 * (f.ranking-rc.ranking) as calc_diff_free
from base_testing.ranking_temp f
            left join ranking_1 rc
                    on f.id=rc.id
on duplicate key update difference_free = calc_diff_free

要点:您的and子句中的列数必须相等insertselect

于 2012-08-30T12:49:32.237 回答
0

我想我设法让它工作......

insert into ranking_1 (difference_free)
(
 select 
 f.ranking, rc.ranking,
 (-1 * (f.ranking-rc.ranking)) calc_diff_free
     from base_testing.ranking_temp f
     left join ranking_1 rc
     on f.id=rc.id
     where 1
 ) 
on duplicate key update difference_free=-1*(f.ranking-rc.ranking)

但它给了我一些警告......

85672 行受影响,记录:42883,重复:42789,警告:4

于 2012-08-30T13:07:59.220 回答