首页 > 代码库 > mysql left( right ) join 使用on 与where的差异
mysql left( right ) join 使用on 与where的差异
之前一直很困扰为什么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的差异
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。