主页 > 知识库 > SQL中过滤条件放on和where中的区别详解

SQL中过滤条件放on和where中的区别详解

热门标签:小程序智能电话机器人 怎么申请400热线电话 河北便宜电销机器人软件 简单的智能语音电销机器人 泗洪正规电话机器人找哪家 ai电话电话机器人 湖南保险智能外呼系统产品介绍 怎么去开发一个电销机器人 南昌呼叫中心外呼系统哪家好

前言

今天接到蚂蚁金服的电面,问了sql中过滤条件放在on和where中的区别,当时满脑子是inner join,觉得没区别啊。后来才想起来,连接查询除了inner join还有right join,left join。汗呐,当时还是太紧张了。这里做一下记录吧。

join过程可以这样理解:首先两个表做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步的临时表再进行过滤。下面看实验:

先准备两张表:

先执行inner join:

select * from person p inner join account a on p.id=a.id and p.id!=4 and a.id!=4;

select * from person p inner join account a on p.id=a.id where p.id!=4 and a.id!=4;

结果没有区别,前者是先求笛卡尔积然后按照on后面的条件进行过滤,后者是先用on后面的条件过滤,再用where的条件过滤。

再看看左连接left join

select * from person p left join account a on p.id=a.id and p.id!=4 and a.id!=4;

这下看出来不对了,id为4的记录还在,这是由left join的特性决定的,使用left join时on后面的条件只对右表有效(可以看到右表的id=4的记录没了)

select * from person p left join account a on p.id=a.id where p.id!=4 and a.id!=4;


where的过滤作用就出来了。。。

右连接的原理是一样的。。

到这里就真相大白了inner join中on和where没区别,右连接和左连接就不一样了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:
  • MySQL查询条件中放置on和where的区别分析

标签:泸州 淮安 江苏 荆门 威海 柳州 景德镇 那曲

巨人网络通讯声明:本文标题《SQL中过滤条件放on和where中的区别详解》,本文关键词  SQL,中,过滤,条件,放,和,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《SQL中过滤条件放on和where中的区别详解》相关的同类信息!
  • 本页收集关于SQL中过滤条件放on和where中的区别详解的相关信息资讯供网民参考!
  • 推荐文章