Sql 分页三种方式
2016-06-06 11:06
411 查看
create database Test go use Test go create Table UserInfo( userid int identity(1,1) primary key, username nvarchar(10) not null ) insert into UserInfo values ('a11') insert into UserInfo values ('a12') insert into UserInfo values ('a13') insert into UserInfo values ('a14') insert into UserInfo values ('a15') insert into UserInfo values ('a16') insert into UserInfo values ('a17') select * from UserInfo declare @pagesize int declare @currentPage int set @pagesize = 3 set @currentPage = 3 select top (@pagesize) * from Userinfo where userid not in( select top (@pagesize*(@currentPage-1)) userid from UserInfo) --第一页:因为不需要对数据过滤, --所以只取PagSize数量的记录 --第二页:步骤: --1.取前两页的数据 selct top @pagesize *@currentPage --2.过滤掉第一页的数据 --第二种方法:如果ID是连续,完全不用top --直接用id就可以 create table #tempUserInfo ( id int identity(1,1) primary key, userid int not null, username nvarchar(10) not null ) insert into #tempUserInfo select * from UserInfo declare @pagesize int declare @currentPage int set @pagesize = 3 set @currentPage = 2 select * from #tempUserInfo where id between (@currentPage -1)*@pagesize +1 and @pagesize * @currentPage --第三种 --rownumber()函数是sql server2005才有 declare @pagesize int declare @currentPage int set @pagesize = 3 set @currentPage = 3 select * from (select ROW_NUMBER() over (order by userid) as HangHao, * from UserInfo) pageduserinfo where HangHao between (@currentPage -1)*@pagesize +1 and @pagesize * @currentPage --效率问题:第一张绝对比第三种低。 --理论上第二种效率最高,但不推荐用, --要实现的话,一般是用存储过程 --个人推荐:用第三种方式 --SqlServer:ROwNumber --MySql:limit --Oracle :序列:Sequence
View Code
public List<Xml_Parameters> BuildTaskXML(string sAccount, int pageNum,int pageSize = 20) { return BulidTaskXMLC(sAccount).Skip(pageSize * (pageNum - 1)).Take(pageSize).ToList(); }
相关文章推荐
- PHP redis本地测试
- mysql对表是操作以及函数的简介
- MongoDB初识篇
- oracle常用的数据字典
- Mysql 开启数据的远程访问权限
- MySql常用操作
- oracle表空间使用率统计查询
- 如何对sql中某个字段里的所有值添加相同的字符
- DB2、ORACLE SQL写法的主要区别
- redis 学习指南
- Memcached使用入门
- MySQL多表查询
- raft 分布式协议 -- mongodb
- mybatis 打印SQL语句
- ubuntu-14.04编译安装PostgreSQL
- Windows安装MySQL解压版
- Mybatis的<where><foreach><set>等标签详解
- SQL语句学习积累·数据的操作
- 数据库控制文件中的SCN详解
- mysql初级