Oracle 分页查询与数据去重
1.rownum字段
Oracle下select语句每个结果集中都有一个伪字段(伪列)rownum存在。
rownum用来标识每条记录的行号,行号从1开始,每次递增1。
rownum是虚拟的顺序值,前提是先排序
使用rownum需注意:
1.rownum的是在取数据的时候产生的序号 。当rownum和order by一起使用时,会首先选出符合rownum条件的记录,然后再进行排序。
2.rownum在过滤时只能使用:<,<= 。rownum在过滤完之后会重新排行号,如果是romnum>n的话,过滤掉不满足条件的,重新排又从1开始还是不满足条件,再过滤最终会把所有数据都过滤掉
2.分页查询
--top n
--查询工资排名前五的员工信息
--思路:先按工资进行排序,再根据行号过滤留下前5条记录
--因为SQL语句的执行顺序是先执行select返回查询结果(行号在此时排好)再进行排序
--所以先需要用子查询,返回排好序的查询结果
select t.* ,rownum from
(select * from emp order by sal desc)t
where rownum<=5; --分页查询
--查询工资排名6~10的员工信息
--思路:因为过滤完rownum字段也会随之变化,所以rownum不能使用大于号判断
--所以还是要用子查询先把行号排好定下来(需要用别名与外层查询的rownum区分开来)
select * from
(select t.*, rownum rown
from
(select * from emp order by sal desc) t) where rown>5 and rown<=10;
3.rowid
rowid 是Oracle中每个表都有的一个实际存在的一个值,rowid的值是唯一的
4.数据去重
--先创建一张表往里面插入几条相同的数据
create table test01(id number(3),name varchar2(10))
insert into test01 values(123,'张三');
insert into test01 values(124,'李四');
insert into test01 values(125,'王五');
insert into test01 values(126,'张三');
insert into test01 values(127,'张三');
insert into test01 values(128,'李四');
insert into test01 values(129,'张三');
--数据去重
--思路:重复项进行分组,获取每一组最小(或最大)的rowid,删除不在此列的数据
delete from test01 where rowid not in(
(select min(rowid) from test01 t group by name)
);

Oracle 分页查询与数据去重的更多相关文章
- Oracle分页查询排序数据重复问题
参考资料: http://docs.oracle.com/database/122/SQLRF/ROWNUM-Pseudocolumn.htm#SQLRF00255 http://blog.csdn. ...
- oracle 分页查询数据重复问题
最近在做项目的时候发现一个问题,oracle 在查询分页数据的时候,有几条数据重复查询了,并且有几条数据在分页的时候消失了.百度了一下发现,ORACLE 在查询数据的时候返回的行不是固定的,他只是按照 ...
- mysql和oracle 分页查询(转)
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
- Oracle分页查询语句的写法(转)
Oracle分页查询语句的写法(转) 分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...
- oracle分页查询及原理分析(总结)
oracle分页查询及原理分析(总结) oracle分页查询是开发总为常用的语句之一,一般情况下公司框架会提供只需套用,对于增删改查而言,查是其中最为关键也是最为难的一块,其中就有使用率最高的分页查询 ...
- mysql和oracle分页查询
MYSQL分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分 ...
- 工作中遇到的oracle分页查询问题及多表查询相关
在工作中,有时,我们会用到oracle分页查询.这时,就需要先了解oracle的rownum.rowmun是oracle的伪列,只能用符号(<.<=.!=),而不能用这些符号(>,& ...
- Oracle分页查询语句的写法
分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. AD:2013云计算架构师峰会精彩课程曝光 Oracle分页查询语句使我们最常用 ...
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
随机推荐
- CSS命名规则常用的css命名规则
CSS命名规则常用的css命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wr ...
- 如何在自定义组件中使用v-model
文章属于速记,有错误欢迎指出.风格什么的不喜勿喷. 先来一个组件,不用vue-model,正常父子通信 <!-- parent --> <template> <div c ...
- PAT1003:Emergency
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- zookeeper应用场景-java
声明,本文是复制别人的文章,感觉还行,原文:http://www.cnblogs.com/xymqx/p/4465610.html 本人热爱技术,跪求有好的技术文章希望大家多多分享,谢谢.... Zo ...
- 出现“Unable to resolve target 'android-XXX'”怎么处理?
这句话的中文意思就是说安卓API版本没有能适配22的,需要将sdk更新一下,必要的话,adt都要跟着更新,但就我尝试来看,还是要先更新adt,然后您或许发现,这个表单好不容易刷出来,但是没有我们想要的 ...
- 第九章——运行tensorflow(Up and Running with TensorFlow)
本章简单介绍了TensorFlow的安装以及使用.一些细节需要在后续的应用中慢慢把握. TensorFlow并不仅仅局限于神经网络和机器学习,它甚至可以用于量子物理仿真. TensorFlow的优势: ...
- Spring Boot 2.0 教程 - 配置详解
Spring Boot 可以通过properties文件,YAML文件,环境变量和命令行参数进行配置.属性值可以通过,@Value注解,Environment或者ConfigurationProper ...
- DataSourceBuilder.create().build()
Spring Boot also provides a utility builder class DataSourceBuilder that can be used to create one o ...
- Shell 起停脚本 专题
To list any process listening to the port 8080: lsof -i:8080To kill any process listening to the por ...
- 开源RPC(gRPC/Thrift)框架性能评测
海量互联网业务系统只能依赖分布式架构来解决,而分布式开发的基石则是RPC:本文主要针对两个开源的RPC框架(gRPC. Apache Thrift),以及配合GoLang.C++两个开发语言进行性能对 ...