数据库分页大全(oracle利用解析函数row_number高效分页)

来源:互联网 发布:美国j1签证被拒 知乎 编辑:程序博客网 时间:2024/04/29 15:08

 

数据库分页大全(oracle利用解析函数row_number高效分页)

 

Mysql分页采用limt关键字

select * from t_order limit 5,10; #返回第6-15行数据 
select
 * from  t_order limit  5; #返回前5 
select
 * from  t_order limit  0,5; #返回前5

sqlserver 2000分页采用top关键字(2005以上版本也支持关键字rownum)

Select top 10 * from t_order where id not in (select id from t_order where id>5 ); //返回第615行数据

其中10表示取10记录 5表示从第5条记录开始取

Oracle分页

采用rownum关键字(三层嵌套)

SELECT * FROM(
  SELECT A.*,ROWNUM  num FROM 
  (SELECT * FROM t_order)A
  WHERE
  ROWNUM<=
15)
WHERE num>=
5;--返回第5-15行数据

采用row_number解析函数进行分页(效率更高)

SELECT xx.* FROM(
SELECT t.*,row_number() over(ORDER BY o_id)AS num
FROM t_order t
)xx
WHERE num BETWEEN 
5 AND 15;

--返回第5-15行数据

解析函数能用格式

函数() over(pertion by 字段 order by 字段);

Pertion 按照某个字段分区

Order 按照勒个字段排序

SQLServer分页

两种:

(1):

 

select top 20 name from table where id>
       (select max(id) from
                (select top 20*3 name from table order by id)
        )

 

(2) :
select top 20 name form table where id not in
  (select top 20*3 from table order by id)