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

mysql left( right ) join 使用on 与where的差异

时间:2014-12-10 13:58:28      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   sp   strong   on   数据   bs   ef   

之前一直很困扰为什么left join要么一查没有数据,要么出现很多条重复数据。

百思不得其解,后来在网上到处找资料,总算明白了。

一定要理解下面几点:

 (1)主表条件在on后面时附表只取满足主表筛选条件的值、而主表还是取整表。

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

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

              放置于ON后。

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

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

 

--------------------下面2个sql最后得到的结果是不一样的

 

select a.*,d.UserName
from T_Letter a
left join T_User d on a.UserID=d.UserID

and d.UserName =‘777‘   //条件查询后才连接 查询件放置于ON后

 

 

select a.*,d.UserName
from T_Letter a
left join T_User d on a.UserID=d.UserID

where d.UserName =‘777‘    //连接完毕后才筛选 条件放置于where后面

 

mysql left( right ) join 使用on 与where的差异

标签:style   color   使用   sp   strong   on   数据   bs   ef   

原文地址:http://www.cnblogs.com/tonnytong/p/4155157.html

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