左联,右联与全外联【待完善】

内      联:等同于两个字段相等。结果集为两表交集;

左()外联:指一方无数据但要显示全部记录;

全  外  联:指两方都有可能没有数据,但全显示。

[Q]怎么实现左联,右联与全外联 
[A]在9i以前可以这么写: 
左联: 
select   a.id,a.name,b.address   from   a,b   
where   a.id=b.id(+) 
右联: 
select   a.id,a.name,b.address   from   a,b   
where   a.id(+)=b.id 
外联 
SELECT   a.id,a.name,b.address 
FROM   a,b 
WHERE   a.id   =   b.id(+) 
UNION 
SELECT   b.id, ' '   name,b.address 
FROM   b 
WHERE   NOT   EXISTS   ( 
SELECT   *   FROM   a 
WHERE   a.id   =   b.id); 
在9i以上,已经开始支持SQL99标准,所以,以上语句可以写成: 
默认内部联结: 
select   a.id,a.name,b.address,c.subject 
from   (a   inner   join   b   on   a.id=b.id)   
inner   join   c   on   b.name   =   c.name 
where   other_clause 
左联 
select   a.id,a.name,b.address 
from   a   left   outer   join   b   on   a.id=b.id   
where   other_clause 
右联 
select   a.id,a.name,b.address 
from   a   right   outer   join   b   on   a.id=b.id   
where   other_clause 
外联 
select   a.id,a.name,b.address 
from   a   full   outer   join   b   on   a.id=b.id   
where   other_clause 
or 
select   a.id,a.name,b.address 
from   a   full   outer   join   b   using   (id) 
where   other_clause 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值