SQL更新查询更新2个表中的一列
问题描述:
我有表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:缺少表达式错误。
答
每当你必须更新(或插入)的基础上值从另一个表的表,可以考虑使用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'语句是什么? –
你是什么意思“更新所有**的table2_column3值”?该查询仅适用于'table1_column2 ='A'' - 行'table1中至少有一行对应**'table2'中的每个**行吗? – mathguy