我是靠谱客的博主 干净刺猬,最近开发中收集的这篇文章主要介绍join 和 where的执行顺序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       引言:今天一同学问我,join后面跟where查询条件,查询的时候是先关联再筛选的还是先各自筛选了再关联的?开始也就凭感觉,应该是先关联再筛选吧!他问了问为什么呢?后来我也越想越纠结了,于是找了两个表试了试,终于得出结论...

  看sql:

  A表:
      id  name
       1   aa
       2   bb
 
   B表:
        id   name
        1     cc


     sql1:   select A.*,B.*  from    A   left  join B  on   A.id=B.id  where B.id<>1

       这时结果集是空的

  结果:

  id   name   id   name


        
 
     sql2:  select A.*,B.*  from    A   left  join (select *  from  B  where B.id<>1 )    on   A.id=B.id
         这时A的会全显示  B为空  结果:

    id   name   id   name

    1      aa

    2      bb

 

      从上面的sql可以看出,如果是先筛选再关联的话,那么sql1和sql2的结果集就应该是一样的,但事实并非如此,所以join后面跟where,是先关联再筛选,where是对整个结果集的一个筛选。

最后

以上就是干净刺猬为你收集整理的join 和 where的执行顺序的全部内容,希望文章能够帮你解决join 和 where的执行顺序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部