首页 > 代码库 > 分页Sql语句
分页Sql语句
第一种 Top剔除法。去除Top (pageIndex-1)*PageSize
SELECT TOP 10* FROM dbo.SBD_EXCHANGE_BILLWHERE EB_ID NOT IN (SELECT TOP (10*1) EB_ID FROM dbo.SBD_EXCHANGE_BILL ORDER BY EB_ID)
第二种 Max剔除法 。去除 小于 Max(PageIndex-1)*pageSize
SELECT TOP 10 * FROM dbo.SBD_EXCHANGE_BILLWHERE EB_ID >(SELECT MAX(EB_ID)FROM (SELECT TOP (10*2) EB_ID FROM dbo.SBD_EXCHANGE_BILL ORDER BY EB_ID) AS T )
第三种方法 游标法(来自网络)
CREATE PROCEDURE pGo_GetRecordFromPage @tblName varchar(255), -- 表名 @fldName varchar(255), -- 字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @IsCount bit = 0, -- 返回记录总数, 非 0 值则返回 @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 @strWhere varchar(1000) = ‘‘ -- 查询条件 (注意: 不要加 where)AS declare @strSQL varchar(6000) -- 主语句declare @strTmp varchar(500) -- 临时变量declare @strOrder varchar(400) -- 排序类型if @IsCount != 0 -- 假如是查询记录总数,直接应用Count(0)函数 begin if @strWhere != ‘‘ set @strSQL = ‘select count(*) as Total from [‘ + @tblName + ‘] where ‘ + @strWhere else set @strSQL = ‘select count(*) as Total from [‘ + @tblName + ‘] ‘ end--假如是想查询记载,则else begin if @PageIndex = 1 --如果是第一页 begin set @strTmp = ‘‘ if @strWhere != ‘‘ set @strTmp = ‘ where ‘ + @strWhere set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘ + @tblName + ‘]‘ + @strTmp + ‘ ‘ + @strOrder end else --如果不是第一页 begin --假如是降序查询…… if @OrderType != 0 begin set @strTmp = ‘<(select min‘ set @strOrder = ‘ order by [‘ + @fldName +‘] desc‘ end --如果是升序查询…… else begin set @strTmp = ‘>(select max‘ set @strOrder = ‘ order by [‘ + @fldName +‘] asc‘ end if @strWhere != ‘‘ set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘ + @tblName + ‘] where [‘ + @fldName + ‘]‘ + @strTmp + ‘([‘ + @fldName + ‘]) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ [‘ + @fldName + ‘] from [‘ + @tblName + ‘] where ‘ + @strWhere + ‘ ‘ + @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder else set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from [‘ + @tblName + ‘] where [‘ + @fldName + ‘]‘ + @strTmp + ‘([‘ + @fldName + ‘]) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ [‘ + @fldName + ‘] from [‘ + @tblName + ‘]‘ + @strOrder + ‘) as tblTmp)‘ + @strOrder endend exec (@strSQL)GO
执行存储过程USE [student]GODECLARE @return_value int --声明返回值变量EXEC @return_value = [dbo].[pGO_GetRecordFromPage] --返回值等于存储过程返回结果 @tblName = N‘T_StuInfo‘, --指定表名 @fldName = N‘stuid‘, --指定排序的字段 @PageSize = 4, --分页大小 @PageIndex = 2, --页码 @IsCount =0, --是否返回记录总数,当指定1时返回满足strWhere条件的记录总数 @OrderType = 0, --排序类型0升1降序 @strWhere =" " --where条件,不用写whereSELECT ‘Return Value‘ = @return_valueGO
分页Sql语句
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。