Row_Number实现分页

 

1:首先是

select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1

生成带序号的集合

2:再查询该集合的 第 1  到第 5条数据

select * from 
    (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) as temp
    where rowNumber between 1 and 5

完整的Sql语句

declare @pagesize int; declare @pageindex int; set @pagesize = 3

set @pageindex = 1; --第一页

select * from (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) as temp where rowNumber between (((@pageindex-1)*@pagesize)+1) and (@pageindex*@pagesize)

set @pageindex = 2; --第二页

select * from (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) as temp where rowNumber between (((@pageindex-1)*@pagesize)+1) and (@pageindex*@pagesize)

set @pageindex = 3; --第三页

select * from (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) as temp where rowNumber between (((@pageindex-1)*@pagesize)+1) and (@pageindex*@pagesize)

set @pageindex = 4;--第四页

select * from (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) as temp where rowNumber between (((@pageindex-1)*@pagesize)+1) and (@pageindex*@pagesize)

下面我们来写个存储过程分页

------------------------------

Alter Procedure PagePager

@TableName varchar(80),

@File varchar(1000),---

@Where varchar(500),---带and连接

@OrderFile varchar(100), -- 排序字段

@OrderType varchar(10),--asc:顺序,desc:倒序

@PageSize varchar(10), --

@PageIndex varchar(10) --

as

if(ISNULL(@OrderFile, '') = '')

begin

set @OrderFile = 'ID';

end

if(ISNULL(@OrderType,'') = '')

begin

set @OrderType = 'asc'

end

if(ISNULL(@File,'') = '')

begin

set @File = '*'

end

declare @select varchar(8000)

set @select = '    select ' + @File + ' from     (       select *,ROW_NUMBER() over(order by ' + @OrderFile + '  '+ @OrderType + ') as ''rowNumber''    from ' + @TableName + '    where 1=1 ' + @Where + '     )  temp where  rowNumber between (((' + @PageIndex + ' - 1) * ' + @PageSize + ')+1) and (' + @PageIndex + '*'+ @PageSize+')'

exec(@select)

用oracle中的Row_Number实现分页的更多相关文章

  1. ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

    ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法 ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组, ...

  2. ORACLE中使用row_number over()排序

    from:http://blog.csdn.net/iw1210/article/details/11937085 意图:实现select top 1 * from tablename Oracle  ...

  3. 问题:oracle ROW_NUMBER()over;结果: ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

    ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法 ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组, ...

  4. oracle中order by造成分页错误

    问题:今天在工作中,在service中调用分页查询列表接口的时候,返回的到页面的数据中总是存在缺失的数据,还有重复的数据. 分析:select * from (select ROWNUM rn,t.* ...

  5. ORACLE中order by造成分页不正确原因分析

     工作中遇到的问题: 为调用方提供一个分页接口时,调用方一直反应有部分数据取不到,且取到的数据有重复的内容,于是我按以下步骤排查了下错误. 1.检查分页页码生成规则是否正确. 2.检查SQL语句是否正 ...

  6. Oracle中的 row_number() over (partition by order by ) 用法

    oracle 里面经常这样用 select col1,col2..., row_number() over (partition by colx order by coly) from table_n ...

  7. SQL中利用ROW_NUMBER()进行分页查询

    SELECT ContractName ,ContractNO, State,CreateDate FROM (SELECT ContractName ,ContractNO,CreateDate, ...

  8. Oracle中经典分页代码!

    在Oracle中因为没有top关键字,所以在sqlserver中的分页代码并不适用于Oracle,那么在Oracle中如何来实现分页呢? --查询所有数据 STUNO STUNAME STUAGE S ...

  9. oracle 中 rownum 和 row_number()

    简单的介绍下oracle 中rownum 和 row_number() 使用,实例演示. 参照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/49 ...

随机推荐

  1. Centos7+Postfix+Dovecot实现内网邮件收发

    1. 前期准备: 主机:CentOS release 7.6.1810 (Core)     #安装时选择邮件服务器 IP:192.168.71.108   #示例 本地yum源 #因为是内网,所以建 ...

  2. mysql批量修改某一列的值为另外的值

    sql语句 UPDATE tb_info SET org_id = 2170 WHERE org_id = 815

  3. Emmet快速语法—助力HTML/CSS一行代码一个页面

    学会之后牛掰的场景如下 我们的目标就是用一行代码=>写下面这样的长长长长的HTML结构来. 如:table>(thead.text>th{手机1}*4)+(tbody.text$*4 ...

  4. Python 匿名函数用法和return语句

    匿名函数用法1.什么是匿名函数    函数定义过程中,没有给定名称函数,python中用lambda表达式创建匿名函数    lambda只是一个表达式,函数体比def简单    lambda主题是一 ...

  5. 微信小程序(四)开发框架

    wxss: 一套样式语言,用于描述wxml 的组件样式 基于css 的删除和修改 尺寸单位:rpx 样式导入 @import 内联样式 style 选择器 .class .intro 选择所有拥有 c ...

  6. 菜鸡的Java笔记 第十六 - java 引用传递

    referenceDelivery    引用传递是整个java 的精髓,也是所有初学者最难学的地方        引用的本质:同一块堆内存可以被不同的栈内存所指向    下面通过三道程序来进行引用传 ...

  7. Java设计模式之(六)——桥接模式

    1.什么是桥接模式? Decouple an abstraction from its implementation so that the two can vary independently. 桥 ...

  8. java 必应壁纸批量下载

    基于java 必应壁纸批量下载 - rookie丶k - 博客园 (cnblogs.com)实现 上面代码运行本地有点小问题,改了改 1.ssl验证 2.请求头 3.需要优化下载速度,多线程方式(还不 ...

  9. Codeforces 878D - Magic Breeding(bitset,思维题)

    题面传送门 很容易发现一件事情,那就是数组的每一位都是独立的,但由于这题数组长度 \(n\) 很大,我们不能每次修改都枚举每一位更新其对答案的贡献,这样复杂度必炸无疑.但是这题有个显然的突破口,那就是 ...

  10. Codeforces 375C - Circling Round Treasures(状压 dp+最短路转移)

    题面传送门 注意到这题中宝藏 \(+\) 炸弹个数最多只有 \(8\) 个,故考虑状压,设 \(dp[x][y][S]\) 表示当前坐标为 \((x,y)\),有且仅有 \(S\) 当中的物品被包围在 ...