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 id  not 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 ) 

你可能感兴趣的:(oracle,sql,mysql,db2,Access)