SQL Update查询从2个表更新一列

时间:2017-02-10 15:01:23

标签: sql oracle

我有表table1和表2 这是select语句。

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:缺少表达式错误。

1 个答案:

答案 0 :(得分:2)

每当您必须根据另一个表中的值更新(或插入)表时,请考虑使用merge语句而不是update/insert

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

在您的情况下,您似乎正在尝试这样做:

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语句执行此操作,这可能有所帮助:

Update with joins