1 创建表结构 test1
create table test1( id varchar2(10) , val varchar2(20), name varchar2(20));
2 创建表结构 test12
create table test2( id varchar2(10), val varchar2(20) , name varchar2(20) );
3 添加数据
insert into test1 values ('1','1111','77');
insert into test1 values ('2','222vs','7538');
insert into test1 values ('2','2222sdf','dg');
insert into test1 values ('3','33sdf33','dgd');
insert into test1 values ('4','44d44','dgdfg');
insert into test1 values ('6','66dgd66','hhfg');
commit;
insert into test2 values ('1','aa332aa','77');
insert into test2 values ('2','bb34b3b','7538');
insert into test2 values ('3','c34ccc','835');
insert into test2 values ('4','dd34dd','3255');
insert into test2 values ('5','ee34e','596666');
commit;
4 删除test2中在test1中存在的数据 通过ID,NAME 两列判断 现在test2中和test1 中重复的数据有两条
4.1 4.2
nvl(test2.id,'@') 的作用是将test2.id 值为null值转换成'@' 进行对比。Oracle 中默认 null值和null值不相等。
DELETE FROM test2 WHERE EXISTS(SELECT 1 FROM test1 b WHERE
nvl(test2.id,'@')=nvl(b.id,'@') and nvl(test2.name,'@')=nvl(b.name,'@'));
5 删除后的结果
5.1 5.2
6 完成通过一个表的多个字段删除另一个表。