oracle 查找A表存在B表不存在的记录
在b字段相同的情况下,如何查找出A表存在B表不存在的a字段的记录?
比较说:A表中是 a b
1 *
2 *
B表中是 a b
1 *
2 /
那么,我要的结果就是,当b=*时,查找出的结果是2 展开
1、创建测试表,
create table test_find_a(a varchar2(20), b varchar2(20));
create table test_find_b(a varchar2(20), b varchar2(20));
2、插入测试数据
insert into test_find_a values(1, '*');
insert into test_find_a values(2, '*');
insert into test_find_b values(1, '*');
insert into test_find_b values(2, '/');
commit;
3、查询表中全量数据,select 'test_find_a' tbl_name, t.* from test_find_a t union all select 'test_find_b' tbl_name, t.* from test_find_b t;
4、编写sql,查找出A表存在B表不存在的a字段的记录
select *
from test_find_a t1
left join test_find_b t2
on t1.a = t2.a
where t1.b <> t2.b
where A.b = B.b
AND A.a not in (select B.a from B where B.b = *)
这样查出来的是A中的a不等于b=*的时候B中的a,就是你要的结果,你可以执行下试试
from
a
left join
b
on
a.a=b.a
and
a.b=b.b
where
b.a is null
(select 0 from B where out.b = b)