您当前的位置: 首页 > 数据库教程 > MySQL教程 > 解析sql语句中left_join、inner_join中的on与where的区别

解析sql语句中left_join、inner_join中的on与where的区别

作者:不详 来源:网络 发布时间: 2014-07-25 18:01 点击:
以下是对在sql语句中left_join、inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下 table a(id, type): id type ---------------------------------- 1 1 2 1 3 2 table b(id, class): id class --------------------------------- 1 1 2 2 sq

解析sql语句中left_join、inner_join中的on与where的区别

  以下是对在sql语句中left_join、inner_join中的on与where的区别进行了详细的分析介绍,需要的朋友可以参考下

  table a(id, type):

  id type

  ----------------------------------

  1 1  

  2 1   

  3 2   

  table b(id, class):

  id class

  ---------------------------------

  1 1

  2 2

  sql语句1:select a.*, b.* from a left join b on a.id = b.id and a.type = 1;

  sql语句2:select a.*, b.* from a left join b on a.id = b.id where a.type = 1;

  sql语句3:select a.*, b.* from a left join b on a.id = b.id and b.class = 1;

  sql语句1的执行结果为:

  
a.id a.type b.id b.class

  ----------------------------------------

  1  1      1  1

  2  1      2  2

  3  2        

  

  sql语句2的执行结果为:

  
a.id a.type b.id b.class

  ----------------------------------------

  1  1      1  1

  2  1      2  2

  

  sql语句3的执行结果为:

  
a.id a.type b.id b.class

  ----------------------------------------

  1  1      1  1

  2  1     

  3  2     

  由sql语句1可见,left join 中左表的全部记录将全部被查询显示,on 后面的条件对它不起作用,除非再后面再加上where来进行筛选,这就是sql语句2了;由sql语句3可见,on后面的条件中,右表的限制条件将会起作用。

  **************************************************************************

  sql语句4:select a.*, b.* from a inner join b on a.id = b.id and a.type = 1;

  sql语句5:select a.*, b.* from a inner join b on a.id = b.id where a.type = 1;

  sql语句6:select a.*, b.* from a, b where a.id = b.id and a.type = 1;

  sql语句7:select a.*, b.* from a, b where a.type = 1 and a.id = b.id;

  这四条语句的执行结果一样,如下:

  
a.id a.type b.id b.class

  ----------------------------------------

  1  1      1  1

  2  1      2  2

  由此可见,inner join 中on后面的限制条件将全部起作用,这与where的执行结果是一样的。另外,where语句与inner join确实能得到相同的结果,只是效率不同(这个我没有测试过,不过我相信这个结论)。

  但是sql语句6是否比sql语句7的效率要低一些,我没有足够的数据量来测试,不过我也相信是如此的。
分享到:
本文"解析sql语句中left_join、inner_join中的on与where的区别"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4