Posted on 2011-04-13 20:22
IceWee 阅读(191)
评论(0) 编辑 收藏 所属分类:
Database
错误写法:
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
第一句是错误的,由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录
SQL的执行顺序从内到外,从右到左。