[oracle] rownum 及 选取排序后的前N条数据
来源:互联网 发布:pdf转图片软件 编辑:程序博客网 时间:2024/04/29 08:43
oracle sql rownum
具体做法就是利用子查询,在构建临时表的时候,把rownum也一起构造进去。比如“select xx,yy from (select xx,yy,rownum as xyz from table where zz >20) where xyz between 10 and 20”这样就可以了。另外使用oracle提供的结果集处理函数minus也可以做到,例如“select xx,yy from table where zz > 20 and rownum <20 minus select xx,yy from table where zz>20 and rownum <10”,但是使用minus好像比使用子查询更加消耗资源。
ps.我在使用的时候必须要select rownum 才能在where中使用rownum ,不知道是为什么......
选取排序后的前N条记录
select
select top 3 e_name from ptemp.cuishen_temp_20100707 order by id
select top 3 * from ptemp.cuishen_temp_20100707 order by id
2. 用rank给记录排名
默认是降序排名
select rank(e_name), id, e_name from ptemp.cuishen_temp_20100707_2 qualify rank(e_name) <> 2
也可以指定asc关键字进行升序排名
select rank(e_name asc), id, e_name from ptemp.cuishen_temp_20100707_2 qualify rank(e_name asc) <= 2
其中
qualify rank(e_name asc) <= 2
子句表示对结果集进行限制,选取e_name字段升序排名前2的记录
限定条件当然也可以这样写:
select rank(name asc), id, name from ptemp.cuishen_temp_20100707 qualify rank(name asc) >= 2 and rank(name asc) <= 5
3. 分页查询
可以用row_number关键字来进行分页查询,例如:
select * from ptemp.cuishen_temp_20100707 qualify row_number() over(order by id) >= 2 and row_number() over(order by id) <= 5
4. row_number和rank的区别
row_number:顾名思意,就是行号,不管记录相不相同,行号都是不同的。
rank:对于不同的记录排名当然是不同的,而对于相同的记录排名是相同的,这就是为什么分页查询不用rank来做的原因。
5. 可以用PARTITION BY关键字进行去重排名查询
select * from ptemp.cuishen_temp_20100707 QUALIFY ROW_NUMBER() OVER(PARTITION BY id ORDER BY id) = 1
上句表示:按id字段排序,取每段重复id记录的TOP 1。千万注意:这个不能用rank来做。
- [oracle] rownum 及 选取排序后的前N条数据
- oracle 选取出现次数最多的前5条数据
- Oracle分组查询取每组排序后的前N条记录
- oracle或mysql分组查询并且获取前3条排序后的数据
- Oracle查询前n条、后n条记录
- Oracle/Mysql查询前N条数据的方法
- oracle 用rownum方法查询最近更新的n条数据
- SQL oracle 用rownum方法查询最近更新的n条数据
- oracle前10条记录取法(rownum的介绍)
- oracle前10条记录取法(rownum的介绍)
- oracle前10条记录取法(rownum的介绍)
- 选取前200条记录,冒泡排序
- Hive经排序后查询前N条记录
- postgresql分类排序后取某一类记录的前n条
- oracle中,分组后,取各组的前n条记录的sql
- ORACLE同一次查询取同一字段的前(后)N条记录
- hibernate hql 查询前N条数据 和后N条数据
- MySQL 查询分页数据中分组后取每组的前N条记录
- {笨方法学Elasticsearch}测试cluster.routing.allocation.disable_allocation
- UVA11389巴士司机问题
- CentOS 7 修改时区
- 输入和输出--重定向标准输入和输出
- 学习笔记141230
- [oracle] rownum 及 选取排序后的前N条数据
- 百度美图
- 输入一个单向链表,输出该链表中倒数第k个结点
- bootbox自定义dialog、confirm、alert样式,以及基本设置方法setDefaults中可用参数
- JQuery筛选器
- UVA11427玩纸牌(全概率+递推)
- uploadify 上传按钮改变
- 关于数据库的delete truncate drop 等区别 很详细哦
- 算法与数据结构面试题(22)-求出在这个圆圈中剩下的最后一个数字