2016-05-02 1 views
0

oracle db私は、2つのvarcharカラム - new_val、old_valを含むテーブルを持っています。 上記の1番目の表のメンテナンスからのold_valを値に含む複数の列を持つ複数の表を更新し、その表の "new_val"で置き換える必要があります。 参加するテーブルを更新するには?

は、次のことを実行しようとしましたが、エラーました:

UPDATE (SELECT a.account_id, b.new_val, b.old_val FROM 
any_table a JOIN val_table b ON a.account_id like  
'%'||b.old_val||'%') SET account_id= 
replace(account_id,old_val ,new_val); 

エラー:ORA-01779:

が、私はエラーを理解することができますが、非キー保存表にマップする列を変更することはできませんが適切な解決策を見つけることができません。

おかげで、

答えて

0

試してみてください。

UPDATE ANY_TABLE a 
    SET account_id= (
     SELECT replace(a.account_id,b.old_val ,b.new_val) 
     FROM VAL_TABLE b 
     WHERE a.account_id like '%'||b.old_val||'%' 
    ) 
    WHERE EXISTS (
     SELECT 1 FROM VAL_TABLE b 
     WHERE a.account_id like '%'||b.old_val||'%' 
    ); 
関連する問題