SQL中ON和WHERE的区别

一直觉得自己SQL不熟练,于是开始刷SQL题,发现了不懂SQL中ON和WHERE的区别,搜索结果网上几十几十篇的博客互相抄 ,关键抄得还很迷惑。好在最后还是弄懂了。


1.首先on是用在连接join中的,它的意思是在生成连接结果的时候  偏心地 剔除掉一些不符合条件的

至于怎么偏心,比如在left join中 它就“偏袒”左(left)边的表 只把右边的表中不符合条件的剔除了(置为null)

如下:

表main

表ext

可以把这两张表看作是用来存放用户信息的, main放置主要信息,ext表放置附加信息,两张表的关系是1对1的,以id字符作为对应关系键。现在我们需要将地址不为杭州的所有用户信息筛选出来,结果中需要包含main表和ext表的所有字段数据。

select * from main left JOIN ext on main.id = ext.id and address <> '杭州'

闭上眼睛, 请用大脑人肉运行一下这段SQL, 想象一下是什么结果。

这个例子中划红线的,原左边记录被“偏袒”留下了,右边的剔除了(置为null)


right join同理偏袒右(right)边的表,但是inner join “偏心”向中间 就和 where没区别了。


2.而where呢,它是在生成连接结果之后,再去一整条记录去剔除(原两张表的内容都会被剔除)



转载于:https://www.cnblogs.com/chz-blogs/p/9380947.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值