共计 843 个字符,预计需要花费 3 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章主要介绍 SQL 中过滤条件放 on 和 where 中的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
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 没区别,右连接和左连接就不一样了。
以上是“SQL 中过滤条件放 on 和 where 中的区别有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节正文完