码迷,mamicode.com
首页 > 数据库 > 详细

mysql left join on 后面的and 条件和 where条件区别

时间:2015-12-11 13:07:55      阅读:546      评论:0      收藏:0      [点我收藏+]

标签:

如:

select * from table_1 left join table_2 on table_1.id = table_2.t1_id and table_2.status > 0

 

select * from table_1 left join table_2 on table_1.id = table_2.t1_id where table_2.status > 0

 

发现两个查询存在差异。

为什么会存在差异,这和on与where查询顺序有关。

 

(1):ON后面的筛选条件主要是针对的是关联表【而对于主表筛选条件不适用】。

(2):对于主表的筛选条件应放在where后面,不应该放在ON后面

(3):对于关联表我们要区分对待。如果是要条件查询后才连接应该把查询件

              放置于ON后。

              如果是想再连接完毕后才筛选就应把条件放置于where后面

(4): 对于关联表我们其实可以先做子查询再做join

mysql left join on 后面的and 条件和 where条件区别

标签:

原文地址:http://www.cnblogs.com/ysdxz207/p/5038526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!