我有表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:缺少表达式错误。
答案 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
语句执行此操作,这可能有所帮助: