2017-02-10 146 views
1

我有表table1和表2 這裏是select語句。SQL更新查詢更新2個表中的一列

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具有不同的值。哪個是對的。

我想更新並用table1_column3替換table2_column3的所有值 我的更新sql語句給我ORA-00936:缺少表達式錯誤。

+5

那麼你的'UPDATE'語句是什麼? –

+0

你是什麼意思「更新所有**的table2_column3值」?該查詢僅適用於'table1_column2 ='A'' - 行'table1中至少有一行對應**'table2'中的每個**行嗎? – mathguy

回答

2

每當你必須更新(或插入)的基礎上值從另一個表的表,可以考慮使用merge聲明,而不是update/insert

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