首页 技术 正文
技术 2022年11月20日
0 收藏 898 点赞 4,415 浏览 1628 个字

  简单的介绍下oracle 中rownum 和 row_number() 使用,实例演示。

  参照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/491090.html  

  我们先创建一个例子用以说明,偷个懒,就用上面那位童鞋的。

create table student (ID char(6), name VARCHAR2(10));
insert into student values('','张一');
insert into student values('','王二');
insert into student values('','李三');
insert into student values('','赵四');
commit;

1)

SQL> select * from student where rownum>=1;

ID NAME
—— ———-
200001 张一
200002 王二
200003 李三
200004 赵四

2)

SQL> select rownum ,t.* from student t where rownum>=1;

ROWNUM ID NAME
———- —— ———-
1 200001 张一
2 200002 王二
3 200003 李三
4 200004 赵四

3)

SQL> select rownum ,t.* from student t where rownum <3;

ROWNUM ID NAME
———- —— ———-
1 200001 张一
2 200002 王二

4)

SQL> select rownum ,t.* from student t where rownum >=2;

未选定行

SQL>

Why?=>1.rownum是一个伪列;rownum总是从1开始,连续不断。

5)

SQL> select rownum,t.* from student t order by name desc;

ROWNUM ID NAME
———- —— ———-
4 200004 赵四
1 200001 张一
2 200002 王二
3 200003 李三

6)

SQL> select row_number() over(order by name desc) rn ,t.* from student t;

RN ID NAME
———- —— ———-
1 200004 赵四
2 200001 张一
3 200002 王二
4 200003 李三

以上5)和6)可以做比较:为什么两者的结果rownum和rn不同,注意row_number() over(…)用法。

7)

SQL> select * from (select rownum rn,t.* from student t) tt where tt.rn between
2 and  3;

RN ID NAME
———- —— ———-
2 200002 王二
3 200003 李三

这种方式可以分页取数据,但是请记得上述的5),伪列rownum不是有序的;如果要进行排序的话,请尽量使用 rownumber() over(…)

8)

SQL> select * from (select row_number() over(order by name desc) rn ,t.* from st
udent t) tt where tt.rn between 2 and 3;

RN ID NAME
———- —— ———-
2 200001 张一
3 200002 王二

9)

SQL> select * from (select rownum rn ,t.* from student t order by name desc)tt w
here tt.rn between 2 and 3;

RN ID NAME
———- —— ———-
2 200002 王二
3 200003 李三

请比较8)和9) 理解7)下的注示。

好吧,就这么多吧,我想上面举得这些例子,已经将rownum 和 row_number 常见用法,以及各自的特征用法都做了举例。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,400
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,895