有两个表,包含相同的字段,也有不同的字段且表2的数据多于表1 ,其中多的部分没有相同的数据,怎样把表1中有表2没有的字段加到表2中呢(数据相同部分),同时也保留表2中多的数据。
1、创建测试表;
create table test_col_1(id number, var varchar2(200));
create table test_col_2(id number, var varchar2(200));
2、插入测试数据,
insert into test_col_1
select level*8, 'var'||level*8 from dual connect by level <= 20;
insert into test_col_2
select level, 'var'||level from dual connect by level <= 100;
3、比较两表的数据,可以发现表2的数据多于表1;
select 'test_col_1' tbl_name, count(*) from test_col_1 t
union all
select 'test_col_2' tbl_name, count(*) from test_col_2 t
4、表1有部分比表2多的数据,
select * from test_col_1
minus
select * from test_col_2;
5、插入表1多的数据,如表2,执行sql,可以发现有多条记录插入。
insert into test_col_2
select * from test_col_1
minus
select * from test_col_2;
首先先谢谢你,我没太明白,问题是这样的,我单位代工资,我单位系统里有员工编号,而他们提供的数据不带编号(新增加的更没有了),这样我就得一个一个的对很麻烦,我想把员工编号直接加到他们提供的数据里而不影响他们的数据,谢谢您
追答他们的数据有员工姓名没有?
我差不多明白你的意思了,是表2中想要增加一个列,这个列需要从表1去取?
是这样的
追答update 表2 set 员工编号=t1.员工编号
from 表2 t2 left join 表1 t1 on t2.员工姓名=t1.员工姓名
where isnull(t2.员工编号,'')=''