我有这个查询,我在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
感谢您的帮助!!
答案 0 :(得分:1)
查询中的on duplicate key update
子句超出了声明列calc_diff_free
的select项的范围。
您可能需要重新设置查询以将其置于范围内。
答案 1 :(得分: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
点:您的insert
和select
子句中的列数必须相等。
答案 2 :(得分: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