左连接、右连接与union操作符
2018-09-01 本文已影响0人
熊猫的雄
图1
图2
图3
图3
将图1和图2的表连接查询达到图3的效果
create table R(
id int primary key,
R1 varchar(20)
);
--插入数据
INSERT INTO R values(1,'holle');
INSERT INTO R values(2,'world');
create table B(
id int primary key,
R2 varchar(20)
);
--插入数据
INSERT INTO B values(2,'java');
INSERT INTO B values(3,'H5');
select r.id, R1, nvl(b.r2,null) R2 --select1
from R,B
where R.id = B.id(+)
UNION
select b.id, NVL(r.r1,null) R1, R2 --select2
from R,B
where R.id(+) = B.id;
创建了表R和B,插入了入如图中表的数据
select1中使用了左连接查询,显示了两个表中id为1、2的两行数据,R2列中使用了nvl(v1,v2)函数(当v1为null时返回v2的值),本例中id=1时,因为R2数据不存在,返归null值在改位置显示
select2中使用右连接查询,显示了id=2、3的数据,R1与上面的R2同理
UNION操作符将select1的行与select2的数据所有行相加,并消除重复行,本例中消除了一行重复的id=2的行。