Oracle里面的外连中where和on之后and有啥区别

1、表做关联的时候有些条件写在where中,有些写在on之后关联条件的and中。那么有什么区别呢。

2、我们指导,表关联一般分为两种:内联和外联。

3、我们先来看内联。

4、准备两个表做连接。表A:test_tb_stid;表B:test_tb_stscore;

5、表A数据如下图:

6、表B数据如下图:

7、用红色字段stid作为关联条件

8、内联,先把过滤条件放在and后:

1

2

3

4

5

select a.*,b.*

from test_tb_stid a

inner join test_tb_stscore b

on a.stid = b.stid

and a.stid = 2

9、结果,发现只出现一条:

10、把过滤条件放到where

11、发现内联的时候,这个过滤条件放on之后的and和where没有区别。

12、我们再看一下外联。

发现虽然加了过滤条件,但是a表还是全量的。如果不加这个a.stid=1,应该会匹配出两条出来,如下图:

说明外联的话:1、主表总是全量的。2、on之后的and条件只对结果内容产生影响,不对结果量产生影响。

13、过滤条件加到where上

直接就是对结果集产生影响了

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值