Posted on 2011-04-13 20:22 
IceWee 阅读(210) 
评论(0)  编辑  收藏  所属分类: 
Database 
			 
			
		 
		错误写法: 
 select a.*, rownum rfrom (select * from lg_order o order by o.order_id) awhere rownum <= 20 and rownum >= 10
select a.*, rownum rfrom (select * from lg_order o order by o.order_id) awhere rownum <= 20 and rownum >= 10
正确写法:
 select *from (select a.*, rownum r          from (select * from lg_order o order by o.order_id) a where rownum <= 20) bwhere r >= 10
select *from (select a.*, rownum r          from (select * from lg_order o order by o.order_id) a where rownum <= 20) bwhere r >= 10
第一句是错误的,由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录 
SQL的执行顺序从内到外,从右到左。