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

mysql中join后on、where的区别

时间:2018-05-15 15:51:08      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:根据   关联   and   color   查询条件   技术分享   注意事项   order by   机构   

SELECT * FROM A;

技术分享图片

SELECT * FROM B;

技术分享图片

以上是两张表的机构



 

SELECT * FROM A LEFT JOIN B ON A.id=b.a_id ;

技术分享图片

语句一   :   SELECT * FROM A LEFT JOIN B ON A.id=b.a_id AND A.id <3;

技术分享图片

语句二:  SELECT * FROM A LEFT JOIN B ON A.id=b.a_id WHERE B.id <3;

技术分享图片

两个语句查询出来的结果是有差异的

sql查询的关键字顺序为  from -> where -> group by-> having ->order by

left join 是在from范围的所以先on条件筛选,然后再做left join

而where是在left join的结果之后再次筛选

语句一(等价于SELECT *FROM A LEFT JOIN (SELECT * FROM B WHERE B.id < 3) b2 ON A.id = b2.a_id;)

  1. 按照on后的条件筛选B.id<3
  2. 1中查询出的结果与A left join

语句二

  1. 先left join 
  2. 然后再根据where条件再次筛选

 



 

使用注意事项:

  1. ON后面的筛选条件主要是针对关联表的(对于主表的筛选条件不适用)
  2. 对于主表的筛选条件应该放在where后面,不应该放在ON后面
  3. 如果查询条件查询后才join连接应该把查询条件放在ON后面;如果要连接完毕后才筛选应该把条件放在where后面
  4. 对于关联表可以先做子查询再join

mysql中join后on、where的区别

标签:根据   关联   and   color   查询条件   技术分享   注意事项   order by   机构   

原文地址:https://www.cnblogs.com/dashuai01/p/9040945.html

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