随笔 - 37  文章 - 29  trackbacks - 0


常用链接

留言簿(3)

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

以前记在笔记上的一点东西,贴上来,省得以后丢了笔记,忘记了
Oracle 分页
select a.*, rownum r
  from (select * from lg_order o order by o.order_id) a
 where 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) b
 where r >= 10

select *
  from (select rid
          from (select rownum rn, rid
                  from (select rowid rid from lg_order o order by o.order_id)
                 where rownum <= 20)
         where rn >= 10) t1,
       lg_order t2
 where t2.rowid = t1.rid


第一句是错误的 由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录
执行顺序从内到外,从右到左
直接取物理地址最快

之前写错了,也没人指出,真是凄凉
posted on 2008-03-23 16:22 EvanLiu 阅读(10249) 评论(7)  编辑  收藏 所属分类: Java基础DB

FeedBack:
# re: Oracle分页SQL 2008-03-23 20:46 矿矿
呵呵
加油!  回复  更多评论
  
# re: Oracle分页SQL 2008-03-23 21:02 冬眠的Evan
竟然有人回复了,感动得眼泪哗啦啦~~~  回复  更多评论
  
# re: Oracle分页SQL 2009-02-19 17:53 wangs130
学习了.  回复  更多评论
  
# re: Oracle分页SQL 2009-04-27 17:05 路人甲
收下了 正在愁人呢 不错 谢啦  回复  更多评论
  
# re: Oracle分页SQL 2009-11-16 21:55 aegean
我觉得你现在的第一条语句没什么错误啊
  回复  更多评论
  
# re: Oracle分页SQL[未登录] 2009-11-17 15:37 test
@aegean
select * from bill_account_book where rownum > 10 这个是明显的错误  回复  更多评论
  
# re: Oracle分页SQL 2010-09-28 12:15 软件秀秀
select * from (
select *,rownumber num
from (select *
from tbl_name
order col_name
)
)
where num > 10 and num < 20  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问