我需要从一个表中获取数据以添加到另一个表中。
我有两个 SQL:
SQL1:
select * from table1;
SQL2:
select * from table2 where coloumn1 = table1.coloumn6 (number)
为了更好地理解,我们会调用每个coloumn coloumn1, coloumn2, ... coloumn9
为了更好地理解,我们会调用每个coloumn coloumn1, coloumn2, ... coloumn13
我的SQL必须从table1.coloumn6
(数字)中获取值 - 检查table2.coloumn1
select * from table2 where coloumn1 = table1.coloumn6 (SQL2)
如果是,则update
(varchar2)到table1.coloumn2
(varchar2)的数据应table2.coloumn4
。
答案 0 :(得分:1)
如果我理解正确,您希望根据其他条件将table1.column2
更新为table2.column1
中的相应值。根据您的描述:
update table1
column2 = (select column4 from table2 t2 where t2.column1 = table1.column6)
where exists (select 1 from table2 t2 where t2.column1 = table1.column6);
答案 1 :(得分:1)
MERGE适用于根据其他表更新/插入表。像这样的东西应该工作(对于明确命名的列,会更清楚)。它还接受一个可选的“WHEN NOT MATCHED THEN”子句,它允许您插入新记录。
MERGE INTO table2
USING (SELECT column2, column6 FROM table1) table1
ON (table2.column1 = table1.column6)
WHEN MATCHED THEN
update set column4 = column2;