`
run_wang
  • 浏览: 168717 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

SQL SERVER 2008 中分页方法集锦

sql 
阅读更多
1.有标识列時的方案:
--1.利用Not In和SELECT TOP分页
语句形式:  
SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
          (SELECT TOP 20 id
         FROM TestTable
         ORDER BY id))
ORDER BY ID


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 10 *
FROM TestTable
WHERE (ID >
          (SELECT MAX(id)
         FROM (SELECT TOP 20 id
                 FROM TestTable
                 ORDER BY id) AS T))
ORDER BY ID


SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >
          (SELECT MAX(id)
         FROM (SELECT TOP 页大小*(页数-1) id
                 FROM 表
                 ORDER BY id) AS T))
ORDER BY ID
--3.比較當前頁主鍵大小
使用:不能指定分頁.只適用於 首頁,上一頁,下一頁,末頁.
首页:
select top 页大小 * from 表名 order by 主键
下一頁:
select top 页大小 * from 表名 where 主键 > 上一页末记录的主键 order by 主键
上一頁:
select top 页大小 * from 表名 where 主键 > 上一页首记录的主键 order by 主键 desc
末頁:
select top 页大小 * from 表名 order by 主键 desc

2.無標識列時的方案,同時也適用於有標識列時的情況.
--1.利用SQL的游标存储过程分页
create procedure SqlPager
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

--2.用临时表.
select top 10 * into #tmp from categories
select * from #tmp

3.SQL2005中的新的排序方法
SELECT *
FROM
(
SELECT *,ROW_NUMBER() OVER (ORDER BY ItemID) AS RowNo
FROM Portal_Discussion
) AS A
WHERE RowNo>=1 and RowNo<=10
分享到:
评论

相关推荐

    sqlserver-oracle 数据类型对照

    - `float`在SQL Server中分为两种:`float(4)`对应Oracle的`BINARY_FLOAT`,`float(8)`对应`BINARY_DOUBLE`。 - `money`和`smallmoney`在SQL Server中对应Oracle的`NUMBER(precision,scale)`,其中scale是小数位数...

    SQL中分页解决方案

    ### SQL中的分页解决方案 ...通过上述介绍,我们了解了在 Oracle、SQL Server 和 MySQL 这三种主流数据库中实现分页查询的具体方法及其背后的原理。希望这些知识能够帮助开发者更好地处理大规模数据集的查询需求。

    oracle mysql sqlserver分页

    SQL Server中分页可以通过多种方式实现,其中一种常用的方法是使用`TOP`关键字结合子查询。此外,还可以使用`OFFSET`和`FETCH`关键字来实现更简单的分页查询。 #### 使用TOP关键字: 1. **第一步**:创建一个子...

    sqlserver分页查询处理方法小结

    SQL Server 2008引入了`TOP`和`ROW_NUMBER()`等关键字,使得分页查询成为可能。以下是对这些方法的详细解释: 1. **TOP方案**: 使用`TOP`关键字来获取指定数量的记录。例如,如果我们想获取第11到20条记录,可以...

    ASP.NET 2.0+SQL Server 2005全程指南-源代码

    ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1...

    sql server 2000 分页存储过程,DB2分页存储过程,db2自动生成流水号存储过程

    下面将详细介绍SQL Server 2000和DB2中分页存储过程的实现,以及DB2如何自动生成流水号。 首先,让我们看看SQL Server 2000的分页存储过程。在SQL Server 2000中,由于没有内置的OFFSET和FETCH NEXT功能,我们通常...

    分页工具-jsp中分页集成jar包

    本资源包“分页工具-jsp中分页集成jar包”提供了在JSP(JavaServer Pages)环境中进行分页操作的解决方案。下面将详细解释这个包中的核心组件和使用方法。 1. **pager-taglib.jar**: 这是一个包含自定义标签库的...

    SQL简单分页教程~~~详细

    本教程中使用的数据库环境为Visual Studio 2008搭配SQL Server 2005,使用master数据库中的`dbo.spt_values`表作为示例。这个表没有指定的主键,但我们可以基于`number`列进行排序。 ### 数据层实现 1. **DBhelper...

    SQLServer数据库的高级操作[收集].pdf

    变量在SQL Server中分为全局变量和局部变量。全局变量由系统定义并维护,例如`@@version`用于查看SQL Server版本,`@@error`返回最后执行的语句的错误号。而局部变量则是用户自定义的,它们的作用范围仅限于当前...

    jsp中分页显示的bean

    在分页显示的场景下,Bean通常会包含分页所需的方法,如获取当前页数、总页数、每页显示的数据数量等。 1. **创建分页Bean** 一个简单的分页Bean可能包含以下属性和方法: - `currentPage`:当前页数 - `...

    关于SQL 数据分页

    在实际应用中,更常见的是使用`OFFSET`和`FETCH NEXT`(在SQL Server 2012及更高版本中)或者`LIMIT`和`OFFSET`(在MySQL等系统中)来实现分页,这些方法通常更有效率,尤其是当配合索引使用时。 为了优化性能,应...

    基于Java的Jsp中分页

    2. **分页逻辑**:在Java后端,我们需要编写一个服务方法,该方法接收当前页码和每页显示条数作为参数,根据这些信息从数据库中查询对应的数据。可以使用SQL的LIMIT和OFFSET子句来实现分页,或者使用ORM框架如...

    JSP 中分页DEMO 例附数据库

    这条SQL语句表示获取第一页(page=1)的前10条数据。 - **预编译语句**:为了防止SQL注入,推荐使用PreparedStatement,可以动态设置LIMIT和OFFSET值。 3. **JSP与数据库交互** - **JDBC连接**:使用JDBC(Java ...

    jsp中分页显示代码

    在JavaServer Pages (JSP) 中实现分页显示是一项常见的任务,特别是在开发Web应用程序时,如数据量庞大的表格或者搜索结果。分页可以帮助用户更轻松地浏览和管理大量的信息,而不是一次性显示所有内容。本篇文章将...

    T-SQL语言基础 T-SQL语言基础

    T-SQL语言基础是SQL Server中的核心组成部分,用于管理和处理数据库中的数据。T-SQL扩展了标准SQL,提供了更多的功能和控制。 在T-SQL中,注释是开发者用来解释代码的重要工具。有两种类型的注释方式:单行注释使用...

    SQL Server 表变量和临时表的区别(详细补充篇)

    临时表在SQL Server中分为两种类型:局部临时表(以`#`开头)和全局临时表(以`##`开头)。 1. **名称长度**:临时表的名称长度限制为116个字符,以便数据库引擎区分不同会话创建的不同临时表。 2. **作用域**: -...

    Java分页大全下载zip版

    - 不同数据库(如MySQL、Oracle、SQL Server)的分页实现示例。 - 使用JDBC直接操作SQL进行分页的方法。 - ORM框架(如Hibernate、MyBatis)的分页插件或API使用教程。 - Spring Data JPA的Pageable接口和Page对象的...

    使用原生ADO+DataSet内存表进行分页显示.docx

    ADO是微软的老一代数据访问技术,它允许开发者直接与各种数据库管理系统(如SQL Server)交互。 分页显示数据是常见的需求,尤其是在处理大量数据时,以提高用户界面的性能和用户体验。文档中提到了两种基本的ADO...

    java中的分页

    1. 数据层分页:这种分页策略主要在数据库层面实现,如SQL查询时通过T-SQL的`OFFSET/FETCH`(SQL Server)、`LIMIT/OFFSET`(MySQL)或`ROW_NUMBER()`(SQL Server 2005/2008)等来限制返回的数据量。这种方法的优点...

    非常全面的SQL2000学习资料

    - 变量在SQL2000中分为全局变量和局部变量。全局变量由系统预定义,以`@@`开头,如`@@CONNECTIONS`,用于反映服务器级别的信息,用户不能直接修改。 - 局部变量由用户定义,使用前需声明,不能与全局变量重名,...

Global site tag (gtag.js) - Google Analytics