2017-01-20 9 views
0
update users 
set users.przetwarzanie = historia_panel.zmiana_z 
from historia_panel 
where 
     users.user_number like historia_panel.user_number and 
     historia_panel.zmienna_zmieniana like '%przetwarzanie%' and 
     historia_panel.przyczyna like '%użytkownika%'; 

、エラーがある:私は指定された条件でhistoria_panelテーブルから値を持つusersテーブルを更新したい。このクエリでpostgreSQLのselectからの更新の使い方は?

The error that is in console: 
ERROR: column "users" of relation "users" does not exist 
LINE 2: set users.przetwarzanie = historia_panel.zmiana_z 

。私はいろいろな方法で試しましたが、インターネット上で見つかった例はありません。

Actualy私はI'amが間違って何見当がつかない...

答えて

2

エラーはあなたがset句で列名を修飾することが許可されていないことを示唆しています。実際にはあなたがすでに言って以来、あなたがする必要はありませんupdate users

これは唯一の問題かどうか私は一見しては言えませんが、それはエラーメッセージがあなたに言っているものです。 set users.przetwarzanie = historia_panel.zmiana_zset przetwarzanie = historia_panel.zmiana_zに変更してみてください。

+0

'ERROR:列" przetwarzanie "は整数型ですが、式は可変の文字型です LINE 2:przetwarzanie = historia_panel.zmiana_z'を設定します。問題は 'update users'だと思う。それは1つの 'FROM'ステートメントまたはこれに似たものでなければなりません。そして、私はこのエラーを解決する方法はまだ分かりませんが、答えはありがたいです;) –

+2

問題が「ユーザーの更新」であると思われる理由は不明です。それはエラーメッセージが何を言っているのか全く分かりません。文字データを整数に代入しています。まず第一に、処理が十分に距離を置いていて、探し続けたい問題(クエリ構造の全体的な問題)が存在しないことを意味します。第二に、あなたはあなたのデータを知る必要があります。エラーは、pgが、整数にvarcharを割り当てることができるように、数値だけを受け入れる列に 'HELLO'のような値を代入するように指示された場合、何をすべきかを推測する位置に入れたくないために発生しますdo –

+0

そうですね。 ;) 'historia_panel.zmienna_z'の型を' int'に ':: int: –

0

問題は異なるテーブルの2つの列の間に互換性のないタイプルがあることでした。私はset przetwarzanie = historia_panel.zmiana_z::intという行を追加しました。

+1

を追加することでreinterpretに変更しました。実際の質問は:なぜあなたは' varchar'カラムに数値を格納していますか? –

+0

私はvarcharを使用しています。これは、historia_panelはユーザーのアカウントで行われた変更の履歴ログであるためです。ユーザーは例のユーザー名を変更することができ、この変更は 'historia_panel'に保存されます。私はこのテーブルを作成した人ではありませんが、私は 'historia_panel'からいくつかの変更を復元し、これらの変更を' users'テーブルに適用する必要があります。 ;) –

関連する問題