SQL中过滤条件放on和where中的区别有哪些

发布时间:2021-04-30 14:44:31 作者:小新
来源:亿速云 阅读:88

这篇文章主要介绍SQL中过滤条件放on和where中的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

先准备两张表:

SQL中过滤条件放on和where中的区别有哪些

先执行inner join:

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

SQL中过滤条件放on和where中的区别有哪些

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

SQL中过滤条件放on和where中的区别有哪些

结果没有区别,前者是先求笛卡尔积然后按照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;

SQL中过滤条件放on和where中的区别有哪些

这下看出来不对了,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;

SQL中过滤条件放on和where中的区别有哪些

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

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

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

以上是“SQL中过滤条件放on和where中的区别有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. SQL 基础之where过滤和 运算符(五)
  2. sql中的left join及on、where条件关键字的区别详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql on where

上一篇:怎么在javascript中捕获窗口关闭事件

下一篇:如何在JavaScript中使用私有类字段

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》