orcale 分页查询语句-----来自csdn论坛

  
一般都采用 row_number()分析函数,因为row_number()分析函数比rownum效率高(经过无数人无数次测试,不信楼主可以去oracle数据库版块发贴问下)。
另外,取全部符合条件的结集果,然后在程序中move的方法不是很好(我知道有人这么做),比如有100万条记录,难道打开游标把这一百万条记录都取出来然后move吗?
效率高不是感觉的,是经过测试的,呵呵。
附分页示例:
(in_page_size 单页显示条数,in_start_page 开始页号,从1开始)
  over(order by init_letter asc ,series_name desc) 按 init_letter升序,series_name 降序



select
 t.series_id,
    t.series_name,
    t.author,
    t.publisher_id,
    t.descriptions,
    t.class_id,
    t.area_id,
    t.init_letter,
    t.money_type,
    t.status

from
 (
    
select
 row_number() 
over
(
order
 
by
 init_letter 
asc
 ,series_name 
desc
) rn,
    series_id,
    series_name,
    author,
    publisher_id,
    descriptions,
    class_id,
    area_id,
    init_letter,
    money_type,
    status
    
from
 dat_ct_series
) t

where
 t.rn 
>
 in_page_size 
*
 (in_start_page
-
1
)

and
 t.rn 
<=
 in_page_size 
*
 in_start_page;

猜你喜欢

转载自269629151.iteye.com/blog/1663140