2011-10-24 19 views
0

私はテーブル_fieldを持っています。何らかの理由でblockというテーブル内のフィールドが乱雑になり、今や間違ったブロック番号が含まれています。 私は_fieldのデフォルトデータを持っていますが、他のフィールドのいくつかは、外国の制約やもののためにデフォルトでは使用できないため、デフォルトデータを復元することはできません。 今のところ、tmp_fieldという新しいテーブルを作成し、デフォルトの_fieldデータを入力しました。他のフィールドに触れることなくテーブルのidフィールドを更新する必要があります

は今、私は_fieldからデータを受け取り、tmp_fieldからblock番号と一致する_fieldblock数字のすべてを変更するクエリを必要とします。

それがあろうフレーズする別の方法:それは_fieldの各行をチェックし、いくつかのフィールド(等fieldid又はname)はtmp_fieldにおける同じフィールドと一致する場合、それは値と一致するように_fieldのブロックの値を変更
tmp_fieldのブロック

注:私はPostgreSQL 9.1を使用しています。

ありがとうございます。

答えて

2
UPDATE _field 
    SET block = tmp_field.block 
    FROM tmp_field 
    WHERE _field.fieldid = tmp_field.fieldid 
     OR _field.name = tmp_field.name 
+0

ありがとう、特に迅速な対応です。私は同様のことを試しましたが、 'FROM'節について知らなかったので動作しませんでした。また、 'fieldid'は' _field.fieldid'で 'name'と同じでなければなりませんが、これはうまくいきます。本当にありがとう。 – zermy

+0

@zermy:コメントごとに更新された回答。 –

関連する問題