sql实现分页

  IF EXISTS(SELECT * FROM sysobjects WHERE name=‘usp_getPage‘)
  DROP PROC usp_getPage
  GO
  CREATE PROC usp_getPage
  @totalCount INT OUTPUT,
   @PageIndex int=1,
   @PageCount INT=5
  AS
  SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY classid) AS id,* FROM dbo.Class) AS temp WHERE id BETWEEN
   @PageCount*(@PageIndex-1)+1 AND @PageCount*@PageIndex
   SET @totalCount=CEILING((SELECT COUNT(*) FROM dbo.Class)*1.0/@PageCount)
  GO

 DECLARE @count INT
 exec usp_getPage @count OUTPUT,2,2
 PRINT @count

主要是 ROW_NUMBER() OVER()函数可以从1开始给select到的数据集标号

然后,ceiling()函数可以获取与相应值相近的最大整数,如:ceiling(2.1)=3

时间: 2024-08-11 21:55:49

sql实现分页的相关文章

SQL 存储过程 分页

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author: *** -- Create date: 2014-03-27 20:00 -- Description: 采用最新的 row_number() over 技术高效分页方法 -- ============================================= ALTER PRO

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

吐槽下linq to sql的分页功能

在调试程序的时候发现一个非常奇怪的问题: 用使用linq分页,分页到第二页的时候,第二页里面有第一页里出现的数据,开始还以为是. linq语句写的有问题,调试半天,无解.后来发现是因为没有排序的缘故. 使用这个q.Skip((sc.cpage.GetValueOrDefault() - 1) * psize).Take(psize).ToList()分页一定要加个排序,否则分页有问题. 吐槽下linq to sql的分页功能,码迷,mamicode.com

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 分页方法

    最近项目中需要在SQL SERVER中进行分页,需要编写分页查询语句.之前也写过一些关于分页查询的语句,但是性能不敢恭维.于是在业务时间,在微软社区Bing了一篇老外写的关于SQL SERVER分页的文章.看过之后,感觉自己之前写的语句,太低端,太不科学了.  文章中讲了两种分页方法,其中一种只适用于SQL SERVER2012以上版本.   ROW_NUMBER()函数分页  先介绍一下ROW_NUMBER()函数,这个函数的主要作用,从它的命名中就可看出来.ROW,每列,NUMBER

自做 数据分页,执行SQL操作数据分页,SQL 分页

WMS.Web.YZMManagement.YZMOrderControl.YZMOrderControl_List.aspx ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33        function ListGrid() {            $("#Button1").click();        } <a id="bt

SQL存储过程分页(通用的拼接SQL语句思路实现)

多表通用的SQL存储过程分页 USE [EmailCenter] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Script Date: 2016/2/29 11:00:19 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROC [dbo].[Common_PageList] ( @tab nvarchar(200),---表名 @strFl

[.NET] SQL数据分页查询

[.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. SELECT Id, Name FROM Users 数据分页查询 当数据量过多时,系统会需要采用分页的方式来分批取得数据.这时可以改写原有的SQL查询指令,在其中加入ROW_NUMBER(),来为每笔资料打上编号.后续依照系统需求,取得某个编号范围内的数据,就完成在系统中提供数据分页查询的功能.(