PL/SQL实现两张表的合并(外连接)

本文详细介绍了如何使用PL/SQL将两张不完全相同的表合并为一张表,重点讲解了外连接(LEFT OUTER JOIN)的使用方法。通过实例演示了三种不同的表合并方式,包括标准SQL写法和全外连接,确保在ID匹配时能够正确合并数据,对于R2列无数据的情况,使用NVL函数处理为空值。

分析:
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值