请教oracle10g中,
有两张表,其中一张表A(a,a1,a2,a3,a4,a5),另一张表B(a,a1,a2,a3)中的字段在A中都有,
如何实现查询A表中的结果,若B表中有与A表某个字段a相同的记录,则显示B表中的字段,
如果在B中没有与A表中这个字段相同的记录则显示A中自有的字段?
即B表中的数据有优先显示的权限。
有两张表,其中一张表A(a,a1,a2,a3,a4,a5),另一张表B(a,a1,a2,a3)中的字段在A中都有,
如何实现查询A表中的结果,若B表中有与A表某个字段a相同的记录,则显示B表中的字段,
如果在B中没有与A表中这个字段相同的记录则显示A中自有的字段?
即B表中的数据有优先显示的权限。
where A.a=B.a(+);
a4 number(20),a5 number(20));
create table B(a varchar(10),a1 number(20),a2 number(20),a3 number(20));
select * from A;
select * from B;
select A.a,nvl(B.a1,A.a1),nvl(B.a2,A.a2),nvl(B.a3,A.a3),A.a4,A.a5 from A,B
where A.a=B.a(+);
insert into A(a,a1,a2)values(1,112,222);
insert into B(a,a1)values(1,117);
结果会显示:1,117,222
需要显示:1,117,空
union all
select a,a1,a2,a3,a4,a5 from A where not exists (select null from B where A.a=B.a)
SELECT B.a,B.a1,B.a2,B.a3,A.a4,A.a5
from A,B
where A.a=B.a(+)
UNION
SELECT A.a,A.a1,A.a2,A.a3,A.a4,A.a5
FROM A,B
where A.a NOT IN (SELECT DISTINCT B.a FROM B)
select t.*,A.a4,A.a5 from
(select a,a1,a2,a3 from A where A.a not in(select A.a from A,B where A.a=B.a)
union
select a,a1,a2,a3 from B where B.a in(select A.a from A,B where A.a=B.a)) t,A
where t.a=A.a
on a.a1=b.a1 and a.a2=b.a2