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. IDEA格式化项目中所有文件的方法

    1,单个文件打开后,直接快捷键Ctrl+Alt+L就可将当前文件格式化 2,快捷键Ctrl+Alt+O可将import格式化(删除无用的import) 3,如果需要格式化整个项目的所有代码,在项目名上 ...

  2. python 字符串和时间格式(datetime)相互转换-

    2019-03-17 11:00:00格式转化 import datetime # str转时间格式: dd = '2019-03-17 11:00:00' dd = datetime.datetim ...

  3. 菜鸡的Java笔记 第十五 this 关键字

    this 关键字                对于this关键字有三种用法:表示本类属性,调用本类方法,当前对象        this 关键字如何实现属性,方法的调用,以及对象本身的描述      ...

  4. linux 系统ssh超时设置

    1.修改client端的etc/ssh/ssh_config添加以下:(在没有权限改server配置的情形下) ServerAliveInterval 60 #client每隔60秒发送一次请求给se ...

  5. Docker部署 Mysql .Net6等容器

    Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ...

  6. 8.4 k8s实现Nginx+Php+WordPress+MySQL实现完全容器化的web站点案例

    1.制作Nginx镜像 1.1 使用nginx:1.21.1官方镜像 # 下载官方镜像 docker pull nginx:1.21.1 # 打本地harbor的tag docker tag 192. ...

  7. WebGoat8.2.2-A8不安全的反序列化

    1.概念   使用反序列化在各编程语言中略有不同,如Java.PHP.Python.Ruby.C/C++,但在关键概念上是一样的     序列化:将(内存中的)对象转化成数据格式,以便存储或传输   ...

  8. 【状压dp】Hamiton路径

    描述 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点 ...

  9. 矩阵树定理&BEST定理学习笔记

    终于学到这个了,本来准备省选前学来着的? 前置知识:矩阵行列式 矩阵树定理 矩阵树定理说的大概就是这样一件事:对于一张无向图 \(G\),我们记 \(D\) 为其度数矩阵,满足 \(D_{i,i}=\ ...

  10. DTOJ 3987: 数学课

    题目描述 wzy又来上数学课了-- 虽然他很菜,但是数学还是懂一丢丢的.老师出了一道题,给定一个包含$n$个元素的集合$P=1,2,3--n$求有多少集合$A \subseteq P$,满足$x \i ...