`
steve_gu
  • 浏览: 32694 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

利用Sql Server的top分页查询的通用构造方式

阅读更多
Sql Server中,假设一个查询sql为querySql,该sql为任意条件的组合,我们把它当作子查询结果表,可利用Sql Server的top来构造通用的分页查询sql:

if (pageInfo.getPageNum() == 1) {
      pagenatedSql = "select top " + pageInfo.pageSize + " * from (" + sql + ") as t1 " ;
}
else {
      pagenatedSql = "select top " + pageInfo.pageSize + " * from (" + sql + ") as t1 " +
            " where (t1." + indexKey + " > (select max(t3." + indexKey + ")" + 
            " from (select top " + (pageInfo.pageNum - 1) * pageInfo.pageSize + " t2." + indexKey + " from (" + sql + ") as t2 order by t2." + indexKey + ") as t3" +
            " )) order by t1." + indexKey;
}


其中pageInfo.getPageNum()为当前页号(从1开始);pageInfo.getPageSize()为每页行数;indexKey为表中索引列,通常为递增的主键。

第二种方式:
pagesize: 每页显示记录数
cureentpage:当前页数

select * from (   select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage   * from user_table   ORDER BY id ASC ) as aSysTable   ORDER BY id DESC ) as bSysTable   ORDER BY id ASC

分享到:
评论
2 楼 memory1897 2012-07-10  
如果过滤条件多并且有排序,那楼主这个查询效率会不会很低?
1 楼 gyb_sx 2008-07-06  

相关推荐

    SSH框架+SQLServer实现分页的小项目

    分页查询通常需要编写SQL语句,利用`TOP`(在SQLServer中)或其他类似关键字来限制返回的记录数,配合`ORDER BY`进行排序。 **分页实现** 在SSH框架下实现分页,通常会涉及到以下几个步骤: 1. **前端页面**:...

    ASP分页通用类 asp分页

    最后,关于`asp分页通用类.txt`这个文件,它可能包含了具体的分页类实现代码,包括如何构造SQL语句、生成分页链接的逻辑,以及可能的优化策略,比如缓存页码和数据,以减少对数据库的多次访问。阅读和理解这个文件的...

    数据库分页大全及示例

    SQL Server 2000/2005提供了多种分页方法,其中一种常见的是使用`TOP`和子查询: 方法1: ```sql SELECT TOP 页大小 * FROM table1 WHERE id NOT IN ( SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id ) ...

    asp通用分页

    6. **参数传递**:当用户点击分页链接时,需要将当前页数作为参数传递回服务器,以便函数能够正确地构造新的查询。 7. **优化**:为了提高性能,可能需要考虑缓存查询结果,或者采用存储过程来减少服务器的负载。 ...

    千万级分页存储过程 实现对表的数据分页 速度非常快

    - **动态SQL构造**:根据`@OrderType`动态选择升序或降序,并根据`@PageIndex`和`@PageSize`计算出子查询的TOP数量,从而实现分页效果。 - **性能优化**:通过子查询先筛选出当前页所需的范围,再进行排序和取TOP...

    统一实现分页接口

    SQL Server使用TOP子句结合ORDER BY子句来实现分页。具体实现如下: ```sql SELECT * FROM (SELECT TOP 页面容量 FROM (SELECT TOP 页面容量*当前页码 FROM 表 WHERE 条件 ORDER BY 字段A) AS temptable1 ORDER BY ...

    数据库中的分页.docx

    分页通常分为两种主要方式:分批查询和一次查询。分批查询适用于大数据量的情况,它只获取用户当前需要的数据,减少内存占用和网络传输成本。一次查询则适合并发用户多的场景,虽然可能一次性加载较多数据,但可以...

    java开发常见知识点

    SQL Server提供了多种分页方式。第一种是利用`NOT IN`和`SELECT TOP`,例如: ```sql SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID ``` 第二种...

    分页类30W数据ASP

    这通常涉及到SQL查询中的LIMIT或OFFSET关键字,或者在某些数据库系统中,如SQL Server,使用TOP和SKIP来实现。 在这个实例中,ASP分页类可能包含以下几个关键组件: 1. **参数设置**:包括每页显示的记录数、当前...

    高效的分页存储过程.txt

    - **主要内容**:本文档提供了一个SQL Server中的高效分页存储过程实现方式,旨在通过优化查询逻辑来提升分页功能的执行效率。 #### 描述:存储过程与页面调用示例 - **存储过程定义**: - `CREATE PROCEDURE ...

    Java反射泛型,实现数据库的动态增删改查等功能

    例如,Oracle使用`ROWNUM`进行分页,而SQL Server则使用`TOP`和`ORDER BY`。我们可以通过一个配置参数或条件判断来选择合适的SQL构造方式。 总结来说,Java反射和泛型的结合使得数据库操作更加灵活和高效,降低了...

    C# 万能查询程序示例

    "C# 万能查询程序示例"是指利用C#语言编写的一个通用查询工具,它可以处理各种数据源,如数据库、XML文件或者自定义的数据结构,帮助开发者快速、灵活地进行数据查询和分析。以下将详细介绍C#实现万能查询程序的相关...

    Asp与Access数据库连接入门

    执行SQL查询语句`SELECT TOP 10 * FROM news ORDER BY id DESC`,它选取`news`表中ID最大的10条记录(也就是最新的10条新闻),按照降序排列。如果记录集`rs`为空,则在网页上显示“没有新闻!”;否则,循环遍历...

    全面优化V4.0及AJAX标签使用技巧

    2. **自定义SQL标签**:SQL查询的构造直接影响系统性能。比如,避免使用`Select *`,而是选择性地选取所需字段,同时优化排序和条件。例如,对比`Select * from ks_article where tid in('栏目ID') order by id desc...

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 通过form向server端发送数据 08 form表单之select标签 09 table标签 第38章 01 css的四种引入方式 02 css的四种基本选择器 03 css的组合选择器 04 css的属性选择器 05 css的伪类 06 css的选择器优先级 07 css的...

    JAVA上百实例源码以及开源项目源代码

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

Global site tag (gtag.js) - Google Analytics