例如,我有2个表
表1:
id number name
-----------------------
1 1684 abc
2 9666 pqr
3 1234 adf
表2:
id number name
-----------------------
1 9109 xyz
2 9564 pqr
我如何获得这样的输出?
表1:
id number name
-----------------------
1 9109 xyz
2 9564 pqr
3 1234 adf
我想在表格中合并表格2。 此外,如果列 - “名称”值从此合并更新/更改,我需要更新状态列,我需要调用smtp邮件的过程,我该如何处理? 状态列具有不同的状态转换(例如:x-> y,a-> b)。 如果记录不在table1中,则应插入。
这些操作都在批处理作业中使用的过程中。
请告诉我这个。 提前感谢您的帮助。
答案 0 :(得分:0)
有不同的方法可以做到这一点,比如使用MERGE语句,但最简单的是
Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.2.0
SQL> create table t$1 ("id" integer, "number" integer, "name" varchar2(3));
Table created
SQL> create table t$2 ("id" integer, "number" integer, "name" varchar2(3));
Table created
SQL> insert into t$1 values (1, 1684, 'abc');
1 row inserted
SQL> insert into t$1 values (2, 9666, 'pqr');
1 row inserted
SQL> insert into t$1 values (3, 1234, 'adf');
1 row inserted
SQL> insert into t$2 values (1, 9109, 'xyz');
1 row inserted
SQL> insert into t$2 values (2, 9564, 'pqr');
1 row inserted
SQL> update t$1 set
2 ("number", "name") = (select "number", "name" from t$2 where t$2."id" = t$1."id")
3 where
4 "id" in (select "id" from t$2);
2 rows updated
SQL> select * from t$1;
id number name
-------- -------- --------
1 9109 xyz
2 9564 pqr
3 1234 adf
答案 1 :(得分:0)
您可以使用MERGE
非常简单地执行此操作:
MERGE INTO table1 dst
USING table2 src
ON ( src.id = dst.id )
WHEN MATCHED THEN
UPDATE SET number = src.number,
name = src.name;