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

このようなことを試してください、

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 に答える
1

クエリのon duplicate key update句は、列calc_diff_freeが宣言されているselect項目の範囲外です。

クエリをスコープに入れるには、クエリを再キャストする必要がある場合があります。

于 2012-08-30T12:46:42.643 に答える
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 に答える