六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 73|回复: 0

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

[复制链接]

升级  60%

36

主题

36

主题

36

主题

秀才

Rank: 2

积分
140
 楼主| 发表于 2013-1-13 18:25:08 | 显示全部楼层 |阅读模式
最近把平时在项目中常用到的数据库分页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 )
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表