SQL TOP分页法

原理:

PageSize, PageIndex;

升序   order  by  a asc

a的 值 大于, 上一页数据 最大的  a值。

降序  order by  a desc

a的 值 小于, 上一页数据 最小的  a值。

代码实例

USE [SZSQ]
GO
/****** Object: StoredProcedure [dbo].[dnt_gettopiclistbytypedatecph] Script Date: 09/12/2014 15:18:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter PROCEDURE [dbo].[dnt_PageSplb]
@pagesize int,
@pageindex int,
@startnum int,
@condition varchar(1000),
@orderby varchar(100),
@ascdesc int
AS

DECLARE @strsql varchar(5000)
DECLARE @sorttype varchar(5)

IF @ascdesc=0
SET @sorttype=‘ASC‘
ELSE
SET @sorttype=‘DESC‘

IF @pageindex = 1
BEGIN
SET @strsql = ‘SELECT TOP ‘ + STR(@pagesize) +‘ [sid],[sname],[sauthor],[sdate],[simg],[slink],[spjs],[slbdl],[slbps],[slbgjw],[slbql],[slbjs],[sbfcs],[splcs],[szdcs],[scdcs],[ssfsx]
from [dnt_splb] where [ssfsx]=1‘[email protected]+‘ ORDER BY ‘[email protected]+‘ ‘[email protected]
END
ELSE
IF @sorttype=‘DESC‘
BEGIN
SET @strSQL = ‘SELECT TOP ‘ + STR(@pagesize) +‘ [sid],[sname],[sauthor],[sdate],[simg],[slink],[spjs],[slbdl],[slbps],[slbgjw],[slbql],[slbjs],[sbfcs],[splcs],[szdcs],[scdcs],[ssfsx]
FROM [dnt_splb]
WHERE dnt_splb.[‘[email protected]+‘] < (SELECT min(tblTmp.[‘[email protected]+‘]) FROM (SELECT TOP ‘ + STR((@pageindex-1)*@[email protected]) + ‘ [dnt_splb].[‘[email protected]+‘] FROM [dnt_splb] WHERE [ssfsx]=1‘[email protected]+‘ ORDER BY [dnt_splb].‘[email protected]+‘ ‘[email protected]+‘)AS tblTmp )
AND [ssfsx]=1
ORDER BY [dnt_splb].‘[email protected]+‘ ‘[email protected]
END
ELSE
BEGIN
SET @strSQL = ‘SELECT TOP ‘ + STR(@pagesize) +‘ [sid],[sname],[sauthor],[sdate],[simg],[slink],[spjs],[slbdl],[slbps],[slbgjw],[slbql],[slbjs],[sbfcs],[splcs],[szdcs],[scdcs],[ssfsx]
FROM [dnt_splb]
WHERE dnt_splb.[‘[email protected]+‘] > (SELECT min(tblTmp.[‘[email protected]+‘]) FROM (SELECT TOP ‘ + STR((@pageindex-1)*@[email protected]) + ‘ [dnt_splb].[‘[email protected]+‘] FROM [dnt_splb] WHERE [ssfsx]=1‘[email protected]+‘ ORDER BY [dnt_splb].‘[email protected]+‘ ‘[email protected]+‘)AS tblTmp )
AND [ssfsx]=1
ORDER BY [dnt_splb].‘[email protected]+‘ ‘[email protected]
END
print @strSQL
EXEC(@strsql)

时间: 2024-10-26 03:10:33

SQL TOP分页法的相关文章

SQL TOP 分页

1 SELECT TOP 每页大小 * 2 FROM Test 3 WHERE 4 ID NOT IN 5 (SELECT TOP 每页大小*页数 id 6 FROM Test 7 ORDER BY id) 8 ORDER BY ID 例子: 1 SELECT TOP 10 * 2 FROM Test 3 WHERE 4 ID NOT IN 5 (SELECT TOP 20 id 6 FROM Test 7 ORDER BY id) 8 ORDER BY ID

3种SQL语句分页写法

在开发中经常会使用到数据分页查询,一般的分页可以直接用SQL语句分页,当然也可以把分页写在存储过程里,下面是三种比较常用的SQL语句分页方法,下面以每页5条数据,查询第3页为例子: 第一种:使用not in,select top 方法: select top 5 * from T_user where ID not in(select top (3-1)*5 id from T_user order by ID) 说明:select top 页大小 [要查询的字段名称] from 表名 wher

sql 2000 分页

create PROCEDURE [dbo].[Proc_GetPageList] (   @Tables varchar(1000),          --表名   @PK varchar(100),               --主键       @Fields varchar(1000) = '*',    --查询的字段   @SortField varchar(200) = NULL, --排序的字段   @SortType varchar(10)= 'ASC',   --排序方式

解决hibernate对Sql Server分页慢的问题

一.hibernate分页 hibernate对MsSql的伪分页 分页是web项目中比不可少的一个功能,数据量大的时候不能全部展示必然要用到分页技术.相信大家对hibernate中的分页都不陌生: Java代码   public Query setMaxResults(int maxResults); public Query setFirstResult(int firstResult); 只要调用了这两个方法并设置好参数,hibernate自动分页完全屏蔽了底层数据库分页技术,这也是众多开

SQL笔记---分页

随用随想,随用随记. 通过实际应用掌握SQL语句. 一. SQL分页 1. 第一种方法:利用ID大于多少进行筛选 SELECT TOP 20        *FROM    dbo.WMS_StockWHERE   ( Rk_SkuCode > ( SELECT MAX(Rk_SkuCode)                         FROM   ( SELECT TOP 40                                            *           

SQL Server 分页语句

表中主键必须为标识列,[ID] int IDENTITY (1,1) 1.分页方案一:(利用Not In和SELECT TOP分页) SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SELECT TOP (页大小*(页数-1)) id FROM 表 ORDER BY id)) ORDER BY ID 2.分页方案二:(利用ID大于多少和SELECT TOP分页) SELECT TOP 页大小 * FROM TestTable WHERE (ID

二、SQL Server 分页

一.SQL Server 分页 --top not in方式 select top 条数 * from tablename where Id not in (select top 条数*页数 Id from tablename) --ROW_NUMBER() OVER()方式 select * from ( select *, ROW_NUMBER() OVER(Order by Id ) AS RowNumber from tablename ) as b where RowNumber BE

SQL server分页的四种方法(算很全面了)

目录: 文章目录 方法一:三重循环 思路 代码实现 查询出的结果及时间 方法二:利用max(主键) 代码实现 查询出的结果及时间 方法三:利用row_number关键字 SQL实现 查询出的结果及时间 第四种方法:offset /fetch next(2012版本及以上才有) 代码实现 结果及运行时间 封装的存储过程 总结 ??这篇博客讲的是SQL server的分页方法,用的SQL server 2012版本.下面都用pageIndex表示页数,pageSize表示一页包含的记录.并且下面涉及

SQL TOP 子句

TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. SQL Server 的语法: SELECT TOP number|percent column_name(s) FROM table_name MySQL 和 Oracle 中的 SQL SELECT TOP 是等价的 MySQL 语法 SELECT column_name(s) FROM table_name LIMIT num