用SQL查询两个表中相同的数据
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;
select t1.* from 表1 t1
left join 表2 t2 on t1.?=t2.? --以什么列相同判定为有,都在这里做等于
where isnull(t2.?,'noData')='noData' --如果表1有而表2也有的列,为null则说明未匹配上,这个列的值不能为null,可以默认为空,否则无法区为值为NULL或因为匹配不成功为NULL
查出表1中有而表2中没有数据,然后就是你的insert into 表2 select ...的问题了.
首先先谢谢你,我没太明白,问题是这样的,我单位代工资,我单位系统里有员工编号,而他们提供的数据不带编号(新增加的更没有了),这样我就得一个一个的对很麻烦,我想把员工编号直接加到他们提供的数据里而不影响他们的数据,谢谢您
他们的数据有员工姓名没有?
我差不多明白你的意思了,是表2中想要增加一个列,这个列需要从表1去取?
select * from 表1 except select * from 表2