(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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24478467/viewspace-737462/