分析:
1.两张不一样的表合并成一张表
2.当id相同时,R1列有数据,R2列没有数据,R2列将显示为空—>nvl(参数一,’null’)
3. 当它们的id相同时,合并成一行显示
步骤:
1.先创建表R、B,并插入数据
create table B (
id int primary key,
R2 varchar(20)
);
insert into B
values(2, 'Java');
insert into B
values(3, 'H5');
create table R (
id int primary key,
R1 varchar(20)
);
insert into R
values(1, 'hello');
insert into R
values(2, 'world');
2.合并表
(方法一:使用外连接处理第一张表)
select r.id, r.r1, nvl(b.R2, 'null')
from r, b
where r.id = b.id(+)
union
select b.id, nvl(r.r1, 'null'), b.r2
from r, b
where r.id(+) = b.id;
(方法二:标准 SQL 写法)
select r.id, r.r1, nvl(b.R2, 'null')
from r left outer join b
on r.id = b.id
union
select b.id, nvl(r.r1, 'null'), b.r2
from r right outer join b
on r.id = b.id;
注意,当使用“left outer join”时,要把where改为on
(方法三:全外连接)
select nvl(r.id, b.id) id, nvl(r.r1, 'null'), nvl(b.r2, 'null')
from r full outer join b
on r.id = b.id;