扫码关注官方订阅号
MySQL 关联查询中使用 on 和 where 子句有什么区别?
欢迎选择我的课程,让我们一起见证您的进步~~
我是搬运工。
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
个人理解 on 是在查询的过程中对关联表使用过滤 从而得到最终查询结果,而where是在关联查询的时候 对关联查询的结果过滤,从而得到最终结果。
mysql join使用on 与where 筛选的差异
// 先on条件筛选表,然后两表再做left join。而对于where来说在left join结果再次筛选。 select A.ID as AID, B.ID as BID from A left join B on A.ID = B.ID and B.ID<3 ; //等同 select A.ID as AID, B1.ID as BID from A left join ( select B.ID from B where B.ID <3 )B1 on A.ID = B1.ID
仅在外链接中才有区别,ON不会匹配外连接条件的所匹配的输出行。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我是搬运工。
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
个人理解 on 是在查询的过程中对关联表使用过滤 从而得到最终查询结果,而where是在关联查询的时候 对关联查询的结果过滤,从而得到最终结果。
mysql join使用on 与where 筛选的差异
仅在外链接中才有区别,ON不会匹配外连接条件的所匹配的输出行。