sql oracle使用更新

时间:2015-05-06 14:35:15

标签: sql oracle

我需要从一个表中获取数据以添加到另一个表中。

我有两个 SQL:

SQL1:

select * from table1;

SQL2:

select * from table2 where coloumn1 = table1.coloumn6 (number)

table1看起来像:

enter image description here

为了更好地理解,我们会调用每个coloumn coloumn1, coloumn2, ... coloumn9

table2看起来像:

enter image description here

为了更好地理解,我们会调用每个coloumn coloumn1, coloumn2, ... coloumn13

文本

会发生什么

我的SQL必须从table1.coloumn6(数字)中获取值 - 检查table2.coloumn1

中是否给出了此值
select * from table2 where coloumn1 = table1.coloumn6 (SQL2)

如果是,则update(varchar2)到table1.coloumn2(varchar2)的数据应table2.coloumn4

2 个答案:

答案 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;