`
gybmike
  • 浏览: 182948 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

简单的Sql分页方案(转)

    博客分类:
  • sql
 
阅读更多

select top 页大小 * 
  from table1
  where id>
  (select max (id) from
  (select top ((页码-1)*页大小) id from table1 order by id) as T
  )
  order by id





drop procedure pagination3
go

CREATE Procedure pagination3(
@tblName varchar(255),--表名
@strGetFields varchar(1000)='*',--需要返回的列
@fldName varchar(255) ='',--排序的字段名
@PageSize int =10,-- 页尺寸(每页记录数)
@PageIndex int =1,--页码
@doCount bit =0,-- 返回记录总数, 非0值则返回记录数
@OrderType bit =0,-- 设置排序类型, 非0值则降序
@strWhere varchar(1500)='')-- 查询条件 (注意: 不要加 where)
AS
begin
declare @strSQL varchar(5000)-- 主语句
declare @strTmp varchar(1100)-- 临时变量
declare @strOrder varchar(4000)-- 排序类型


if @doCount!=0
begin
if @strWhere!=''
set @strSQL='select count(*) asTotal from ['+@tblName+'] where '+@strWhere
else set @strSQL='select count(*) as Total from ['+@tblName+']'
end --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况
else
begin
if @OrderType!=0 --降序(desc)
begin
set @strTmp='<(select min'
set @strOrder='order  by['+@fldName+'] desc'  --如果@OrderType不是0,就执行降序,这句很重要!
end
else --升序(asc)
begin
set @strTmp='>(select max'
set @strOrder='order by['+@fldName+'] asc'
end

if @PageIndex=1 --页码
begin
if @strWhere!=''
set @strSQL='select top '+str(@PageSize)+' '+@strGetFields+' from ['+@tblName+']  where'+@strWhere+''+@strOrder
else 
set @strSQL='select top '+str(@PageSize)+' '+@strGetFields+' from ['+@tblName+']'+@strOrder --如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin --以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL='select top '+str(@PageSize)+' '+@strGetFields+' from ['+@tblName+'] where ['+@fldName+'] '+@strTmp+'(['+@fldName+']) from (select top'+str((@PageIndex-1)*@PageSize)+'['+@fldName+'] from ['+@tblName+']'+@strOrder+') as tblTmp)'+@strOrder 
if @strWhere!=''
set @strSQL='select top '+str(@PageSize)+' '+@strGetFields+' from ['+@tblName+'] where ['+@fldName+']'+@strTmp+'(['+@fldName+']) from (select top'+str((@PageIndex-1)*@PageSize)+'['+@fldName+'] from['+@tblName+'] where'+@strWhere+''+@strOrder+') as tblTmp) and '+@strWhere+' '+@strOrder
end
end

--print ''+@strSQL
exec (@strSQL)
end
GO


分享到:
评论

相关推荐

    SQL Server 分页方案比拼

    本文将深入探讨SQL Server中几种常见的分页方案,并对它们进行比较分析。 ### 1. 基于子查询的分页方法 一种常用的分页策略是通过子查询来实现。具体做法是在外层查询中使用`TOP`关键字选取一定数量的记录,而在内...

    LINQ To SQL实现分页效果源码

    总结来说,LINQ to SQL的分页功能结合了强大的查询表达能力和数据库操作的便利性,为.NET开发者提供了高效的数据访问解决方案。通过理解和实践这些步骤,你可以在你的应用程序中实现高效的分页功能。

    关于SQL Server SQL语句查询分页数据的解决方案

    关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...

    SQL中分页解决方案

    #### 一、SQL Server 分页方案 **1.1 使用 `TOP` 关键字** 在 SQL Server 中,`TOP` 关键字常用于限制返回的结果集大小。例如,要获取表中的前五条记录,可以使用以下语句: ```sql SELECT TOP 5 * FROM 表名; ``...

    常用sql分页解决方案

    本资源“常用sql分页解决方案”提供了三种不同的分页方法,旨在帮助开发者更高效地实现数据检索。 一、LIMIT与OFFSET方法(MySQL) 在MySQL中,最常用的分页查询方式是使用`LIMIT`和`OFFSET`关键字。`LIMIT`用于...

    sql分页查询

    ### SQL分页查询详解 #### 一、引言 在数据库操作中,分页查询是一项非常重要的技术。尤其是在处理大量数据时,一次性加载所有数据到前端不仅效率低下,还可能导致性能问题。通过分页查询,我们可以按需获取数据,...

    用SQL实现分页的三种方法

    ### 用SQL实现分页的三...- **分页方案三**(利用SQL的游标存储过程分页)虽然效率最低,但适用范围最广。 在实际应用中,应根据具体情况选择合适的分页策略,同时考虑表结构、数据分布等因素,以达到最佳的性能表现。

    通用Sql分页存储过程

    通用sql分页存储过程,提供12参数可供选择。其中,提供两种分页方案被选择和相关排序方式,支持自定义查询、自定义排序等

    利用SQL游标存储过程分页方案

    利用SQL游标存储过程分页方案,以前用过,应该还行

    关于Hibernate分页类和jdbc的sql分页完美融合

    本主题将探讨如何在Hibernate分页类和JDBC的SQL分页方法之间实现完美的融合,以提高性能并提供更好的用户体验。 首先,让我们了解一下Hibernate的分页功能。Hibernate提供了一种方便的方式来处理分页查询,通过...

    .net生成sql分页高性能语句类

    标题提到的".net生成sql分页高性能语句类"正是为了解决这一问题,它提供了一种无需在SQL Server中编写存储过程的解决方案。 这个类库允许开发者通过指定表名、所需字段、查询条件和排序方式,自动生成高效的SQL分页...

    分页(sql分页基本上通用,条件和想要显示的内容只要在外边加上就可以了)

    本文将基于提供的SQL分页存储过程,详细介绍其工作原理及实现细节。 #### 二、存储过程概述 此存储过程名为`PAGINATION_JHGL`,主要功能是根据传入的参数实现对数据库表中的数据进行分页查询。下面我们将逐一分析...

    最简单的SQL Server数据库存储过程分页

    传统的T-SQL分页方法可能会导致性能问题,尤其是在面对百万级别的数据集时。本文介绍一种简单且高效的SQL Server存储过程实现分页的方法,这种方法仅需提供SQL语句、每页的记录数以及当前页数即可快速完成分页操作。...

    报表性能优化方案之单数据集分页SQL实现层式报表

    行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分页SQL。今天我们以Access数据库为例介绍需要写分页SQL的数据库怎样利用行式的...

    SQL server 分页查询

    SQL Server的分页查询功能为开发者提供了灵活多样的解决方案,无论是基于`ROW_NUMBER()`函数的现代方法,还是传统的子查询技巧,都能满足不同场景下的需求。然而,随着数据量的增长,选择合适的分页策略,以及持续...

    SQL Server 存储过程的分页方案比拼

    本文将对比三种不同的SQL Server存储过程中的分页方案,以帮助你选择最适合你应用场景的方法。 ### 分页方案一:Not In + SELECT TOP 这种方法是通过`NOT IN`子句和`SELECT TOP`配合实现分页。首先,它获取前N个ID...

    3个高效率sql分页存储过程

    本文将详细介绍三个高效且参数最少的SQL分页存储过程,帮助你优化数据库性能,提升查询速度。 1. **基于ROW_NUMBER()函数的分页存储过程** ROW_NUMBER()是SQL Server中的一个窗口函数,它为每一行提供一个唯一的...

    在SQL Server中通过SQL语句实现分页查询

    通过对上述三种分页方案的分析可以看出,在实际应用中应根据具体情况选择合适的分页策略。如果表中有递增的唯一标识符(如ID),那么推荐使用方案二,因为它在大多数情况下提供更好的性能。若没有这样的唯一标识符,...

    SQLServer数据库分页查询

    ### SQL Server 数据库分页查询方法详解 #### 一、背景与问题定义 在实际的数据库操作中,分页查询是非常常见的需求之一。对于大型数据集来说,一次加载所有数据到前端显示是不现实的,这不仅会增加服务器负担,还...

Global site tag (gtag.js) - Google Analytics