2017-02-10 9 views
1

テーブル1とテーブル2があります ここにselectステートメントがあります。2つのテーブルから1つの列を更新するSQL更新クエリ

SELECT table1_column1, table1_column2, table1_column3, table2_column1, 
     table2_column2, table2_column3 
FROM table1 
    , table2 
WHERE table1_column1 = table2_column1 
    AND table1_column2 = 'A' 
    AND table1_column3 <> table2_column3 

table1_column3とtable2_column3の値が異なる場合があります。どちらが正しい。

すべてのtable2_column3値をtable1_column3に更新して置換したい 私の更新SQL文でORA-00936:式エラーが見つかりません。

+5

あなたの 'UPDATE'ステートメントは何ですか? –

+0

「update ** all ** of table2_column3 values」とはどういう意味ですか?クエリは 'table1_column2 = 'A''の行のみに適用されます。' table2'の各**行に対応する 'table1'に少なくとも1行は残っていますか? – mathguy

答えて

2

アップデート(または挿入)しなければならないときはいつでも、テーブル別のテーブルからの値に基づいて、代わりにupdate/insertmerge声明使用することを検討してください:あなたのケースでは

https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606

を、あなたがしようとしているように見えますあなたはupdate声明でこれを行うにしたい場合は代わりに、

merge into table2 t2 
    using table1 t1 
    on (t1.column1 = t2.column1 and t1.column2 = 'A') 
when matched then update set column3 = t1.column3 
    where column3 != t1.column3 
; 

これが役立つことがあります。これを行う

Update with joins

関連する問題