oracle 中关于左连接

本文通过具体实例解析了SQL中左连接(left join)的使用方法,特别是当涉及到表B的where条件限制时,如何正确理解和应用left join,避免误解。

两张表:

A:

id  name

a   jim

b   tom

c  kate

B:

id  name

a   jim

c   kate

表A和表B进行左连接时,如果表B存在限制where条件,在书写sql是需要注意。可理解为在表做完连接再取where条件。如下例子:

Select * from a ,b where  a.id=b.id(+)  and b.id=’a’

执行这句sql 后结果如下:

id   name   id  name

a     jim    a  jim

往给人的错觉是在b表中加入了where 限制条件左连接没有起到作用,其实不然。下面分析一下sql的执行过程:

首先a表和b表用id字段进行连接;结果如下:

id   name  id  name

a    jim    a   jim

b   tom    null  null

c  kate     c  kate

再用b.id=‘a’做限制时,由于id:b、c对应的b的id 为null 故在最终结果中被剃掉了。并非左连接没有起到作用。

下列写法:

       Select * from a,b where a.id=b.id(+) and b.id(+)=’a’

可理解为先对b表进行限制,然后进行做连接

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值