java sqlserver分页查询_Sqlserver 分页查询

说到分页查询,相信很多人都知道,可能对于写后台的人来说,只需要拿到前台的每页条数:PageSize  ,当前页码:PageIndex 在传值给数:RecordCount   给数据库处理就行了。(当然直接在后台拼接sql字符串也可以)数据库是怎末处理的呢?我们来看看这个分页的存储过程:

USE [SmartNetGO

/****** Object: StoredProcedure [dbo].[ReportManage_Finance_CostRoom_GetList] Script Date: 2019/10/28 星期一 11:50:31 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[存储过程名]

--模拟省市区的查询条件@ProvinceID int,@CityID int,@AreaID int,@pageSize int,//每页的条数@nowPage int,//当前页数@RecordCount intoutput //返回的记录条数As

//我们先搭一个最大的框架

SELECT k.* FROM ( select ROW_NUMBER() OVER (ORDER BY Id desc ) as RowNumber,

结果项1,

结果项2,

结果项3.。。。。。

from 表 A where (省id=@ProvinceID or @ProvinceID=0) and (市id=@CityID or @CityID=0) and (县区id=@AreaID or @AreaID=0))kwhere RowNumber BETWEEN @PageSize*(@nowPage-1)+1 and @PageSize*@nowPage

select ROW_NUMBER() OVER (ORDER BY Id desc ) as RowNumber 是什么意思呢? 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY 【列名】DESC) 是先把【列名】降序排列,再为降序以后的每条【列名】记录返回一个降序序号,序号从1开始,依次往下排。

排名函数 "ROW_NUMBER" 必须有 ORDER BY 子句。

至于where后面是什么意思,你可以看我在SqlServer多条件查询技巧https://www.cnblogs.com/zpy1993-09/p/11677406.html中做过详细解释了。

总记录数就比较好搞了。

set @RecordCount=( select Count(*)from 表 A where (省id=@ProvinceID or @ProvinceID=0) and (市id=@CityID or @CityID=0) and (县区id=@AreaID or @AreaID=0))

这样后台在调用存储过程,返回的结果就是分页后的结果了。是不是很简单!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值