ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL执行顺序

SQL执行顺序

原创 Linux操作系统 作者:ycpriscilla 时间:2012-07-27 16:25:58 0 删除 编辑
粗略的写一下,关注两个重点。
SQL的执行顺序:

(1)  FROM   检查对象是否存在

(2) ON   检查连接条件,字段是否存在

(3) JOIN  连接类型

(4) WHERE    过滤条件

(5) GROUP BY    分组

(6) WITH {CUBE | ROLLUP}      

(7) HAVING   过滤分组

(10) ORDER BY   排序


其中要注意,JOIN要先于WHERE条件执行。

如:

select a.name,b.class,c.fund from 

a,b,cc where a.id=b.id and a.lx=cc.lx(+) and   cc.rp=1  ;

这里先执行连接a.id=b.id and a.lx=cc.lx(+),执行完毕后再执行where过滤cc.rp=1 


select a.name,b.class,c.fund from 

a,b,(select rp,lx from  cc where cc.rp=1) c where a.id=b.id and a.lx=c.lx(+)   ;

这里先执行(select rp,lx from  cc where cc.rp=1),cc.rp=1的数据,然后再与a、b连接,再执行where中的过滤条件。

两种写法,结果是不一样的(十有八九都是一样的,第二种结果往往会多一些)。原因在于,第一种写法中,左连接后进行了过滤,其结果相当于没有进行左连接;第二中写法中,先过滤再后左连接,得到行数是的a 、b连接后的结果的行数。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24478467/viewspace-737462/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-08-18

  • 博文量
    36
  • 访问量
    101566