方法一:

SELECT TOP 页大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
)
ORDER BY id

方法二:

SELECT TOP 页大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id

方法二倒序:

SELECT TOP 页大小 *
FROM table1
WHERE ID <=
(
SELECT ISNULL(MIN(ID),(SELECT MAX(ID) FROM table1 ))
FROM
(
SELECT TOP (页大小*(页数-1)) ID FROM tbl_files ORDER BY ID DESC
) A
)
ORDER BY ID DESC

方法三:

SELECT TOP 页大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber > 页大小*(页数-1)

分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用

例子:

以下轉載至http://www.cnblogs.com/zcttxs/archive/2012/04/01/2429151.html

2.几种典型的分页sql,下面例子是每页50条,198*50=9900,取第199页数据。

 :row_number()  over()
select top * from (
select Row_Number() over(order by id) as rownumber ,* from table)a
where rownumber > select * from (
select row_number() over(order by id)as rownumber,*from table)a
where rownumber > adn rownuber< not in select top * from table
where id not in (select top id from table order by id)
order by id

    ALTER PROCEDURE   存儲過程名
( @tbName VARCHAR(), --表名
@tbGetFields VARCHAR()= '*',--返回字段
@OrderfldName VARCHAR(), --排序的字段名
@PageSize INT=, --页尺寸
@PageIndex INT=, --页码
@OrderType bit = , --0升序,非0降序
@strWhere VARCHAR()='', --查询条件
--@TotalCount INT OUTPUT --返回总记 )
AS BEGIN
DECLARE @strSql VARCHAR() --主语句
DECLARE @strSqlCount NVARCHAR()--查询记录总数主语句
DECLARE @strOrder VARCHAR() -- 排序类型
IF ISNULL(@strWhere,'')<>''
set @strSqlCount='select @TotalCout=count(*) from '+@tbName+'
where ='+@strWhere
else set @strSqlCount='select @TotalCount=count(*) from '+@tbName ------分頁
IF @PageIndex <= set @PageIndex =
IF(@OrderType<>) set @strOrder='ORDER BY'+@OrderfldName+'DESC'
ELSE SET @strOrder=' ORDER by'+@OrderfldName+' ASC' SET @strSql='SELECT * FROM
(SELECT ROW_NUMBER() OVER('+@strOrder+') RowNo,'+@tbGetFields+'FROM'+@tbName +' WHERE ='+@strWhere+')tb
where tb.RowNo between '+str((@PageIndex-1)*PageSize+1)+'AND'
+str(@PageIndex * @PageSize) exec(@strSql)
select @TotalCount
end

利用存儲過程sql分頁

SQL分页语句三方案的更多相关文章

  1. SQL点滴16—SQL分页语句总结

    原文:SQL点滴16-SQL分页语句总结 今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 *from Orders orderid from Or ...

  2. SQL分页语句总结

    今天对分页语句做一个简单的总结,他们大同小异的,只要理解其中一个其他的就很好理解了. 使用top选项 selecttop10*from Orders a where a.orderid notin(s ...

  3. [SQL分页语句的三种方式]

    我们在开发的过程经常会用到数据分页,在网上也可以搜到大量的分页插件.这是在端上控制的;有的是在SQL语句实现分页,这是在数据源上 实现分页的; 今天,我就在总结一下我经常用到的SQL语句分页! 第一种 ...

  4. SQL分页语句

    有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL ...

  5. 冒泡排序,sql分页语句

    对数组中的数字进行排序 public int[] PopSmall(int[] IntArray) { ; ; i < IntArray.Length - ; i++) { ; j < I ...

  6. Sql 分页语句

    select * from (select *,ROW_NUMBER()over(order by [ID]) as rowindex from product ) tb  where rowinde ...

  7. sql分页语句 速度比较快

    select * from ( select *,ROW_NUMBER() over (order by createtime) as rank from taskInfo )

  8. 经典SQL分页语句

    select top pageSize, * from (SELECT row_number() over(order by id desc) as rownumber,*FROM tb1) A wh ...

  9. 简单又高效的Access分页语句

    转自:http://www.ljf.cn/archives/2281 Access实现分页其实也可以在查询语句里面做. 除了流行的top分页法之外,其实还有一种更简单,更容易理解,并且效率也不低的分页 ...

随机推荐

  1. hadoop常用的操作命令

    1.显示hdfs上test目录下的所有文件列表 hadoop fs -ls /test/ 2.查看hdfs中的文件内容 hadoop fs -cat /daas/bstl/term/rawdt/201 ...

  2. centos6.5无法访问网络

    1.在network Adapter选中,右侧是否是选中为NAT 2.打开网络和共享中心-->更改适配器设置,VMnet8和VMnet1是否是自动获取了IP,自动获取ip连接上后 3.右击本地连 ...

  3. linux 守护程序小记(指定进程不存在则启动 )

    最近想在debian 下做个守护进程.用于守护指定的程序一直处于运行状态.网上查了下,有Crontab方式和写脚本执行方式. Crontab Crontab 是系统自带的,类似于Windows的计划任 ...

  4. JBPM工作流

    一.开发环境的搭建 1.下载Jbpm4.4 1.1下载地址: https://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/ 1.2解压后 ...

  5. springMVC异常&&重定向&&转发

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  6. JS和JSON的区别

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,JSON格式的数据,主要是为了跨平台交流数据用的.但JSON和JavaScript确实存在渊源,可以说这种数 ...

  7. MongoDB数据库的CURD的一些基本语句

    from:http://www.data321.com/shujuku/20160514417/addToSetQianMianBuXuYaoJinXing 插入文档: SQL语句: INSERT I ...

  8. Class.forName和ClassLoader.loadClass等

    Class类 首先,Class类里可以记载所有类的属性.方法等信息.这个也就是运行时类别标记,它记录了所有的对象(比如int,MyClass,void,数组等等)对应的类信息. Class对象 JVM ...

  9. [LeetCode] Recover Binary Search Tree 复原二叉搜索树

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  10. GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 分析过程 这是我的C源文件:click here 使用gcc - g example.c -o example -m32指令在64位的机器上产生32位汇编,然后使用gdb ...