Mr.Cheney 发表于 2013-1-13 18:25:08

Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句

最近把平时在项目中常用到的数据库分页sql总结了下。大家可以贴出分页更高效的sql语句。
需用到的参数:   
pageSize 每页显示多少条数据   
pageNumber 页数 从客户端传来   
totalRecouds 表中的总记录数 select count (*) from 表名   
totalPages 总页数   
totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1   
pages 计算前pages 条数据   
pages= pageSize*(pageNumber-1)   
SQL语句:   
select top pageSize * from 表名 where idnot in (select top pages id from 表名 order by id) order by id   
第二种分页方法   
pageSize 每页显示多少条数据   
pageNumber 页数 从客户端传来   
pages=pageSize*(pageNumber-1)+1   
select top pageSize * from 表名 where id>=(select max(id) from (select top pages id from 表名 order by id asc ) t )   

mysql分页   
需用到的参数:   
pageSize 每页显示多少条数据   
pageNumber 页数 从客户端传来   
totalRecouds 表中的总记录数 select count (*) from 表名   
totalPages 总页数   
totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1   
pages 起始位置   
pages= pageSize*(pageNumber-1)   
SQL语句:   
select * from 表名 limit pages, pageSize;   
mysql 分页依赖于关键字 limit 它需两个参数:起始位置和pageSize   
起始位置=页大小*(页数-1)   
起始位置=pageSize*(pageNumber -1)   
oracle分页   
pageSize 每页显示多少条数据   
pageNumber 页数 从客户端传来   
totalRecouds 表中的总记录数 select count (*) from 表名   
totalPages 总页数   
totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1   
startPage 起始位置   
startPage= pageSize*(pageNumber-1)+1   
endPage=startPage+pageSize   
SQL语句   
select a.* from   
(   
select rownum num ,t.* from表名 t where 某列=某值 order by id   
)a   
where a.num>=startPage and a.num= startPage AND a.rowid =(select max(id) from (select top pages id from 表名 order by id asc ) t )
页: [1]
查看完整版本: Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句