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 分页查询与数据去重的更多相关文章

  1. Oracle分页查询排序数据重复问题

    参考资料: http://docs.oracle.com/database/122/SQLRF/ROWNUM-Pseudocolumn.htm#SQLRF00255 http://blog.csdn. ...

  2. oracle 分页查询数据重复问题

    最近在做项目的时候发现一个问题,oracle 在查询分页数据的时候,有几条数据重复查询了,并且有几条数据在分页的时候消失了.百度了一下发现,ORACLE 在查询数据的时候返回的行不是固定的,他只是按照 ...

  3. mysql和oracle 分页查询(转)

    最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...

  4. Oracle分页查询语句的写法(转)

    Oracle分页查询语句的写法(转)   分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...

  5. oracle分页查询及原理分析(总结)

    oracle分页查询及原理分析(总结) oracle分页查询是开发总为常用的语句之一,一般情况下公司框架会提供只需套用,对于增删改查而言,查是其中最为关键也是最为难的一块,其中就有使用率最高的分页查询 ...

  6. mysql和oracle分页查询

    MYSQL分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分 ...

  7. 工作中遇到的oracle分页查询问题及多表查询相关

    在工作中,有时,我们会用到oracle分页查询.这时,就需要先了解oracle的rownum.rowmun是oracle的伪列,只能用符号(<.<=.!=),而不能用这些符号(>,& ...

  8. Oracle分页查询语句的写法

    分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. AD:2013云计算架构师峰会精彩课程曝光 Oracle分页查询语句使我们最常用 ...

  9. 【SQL】Oracle分页查询的三种方法

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...

随机推荐

  1. Eeffective C++ 读书笔记( 32-38)

    条款三十二:确定你的public继承塑模出is-a关系 1.所谓最佳设计,取决于系统希望做什么事,包括现在和未来. 2.好的接口可以防止无效的代码通过编译,因此你应该宁可采取“在编译期拒绝企鹅飞行”的 ...

  2. HTTP协议、Ajax请求

    今天这篇文章呢,主要讲的就是关于HTTP协议.Ajax请求以及一些相关的小知识点.虽然内容不算多,可是是很重点的东西~ HTTP协议 1. http:超文本传输协议.简单.快速.灵活.无状态.无连接. ...

  3. 读《图解HTTP》有感-(了解web及网络基础)

    写在前面 <图解HTTP>是由上野宣先生著,于均良先生译 闲暇之余!写写博文甚是高兴.如有不准确,望各位斧正.共同学习! 正文 HTTP协议是什么?能做什么? HTTP(超文本传输协议)实 ...

  4. C Primer Plus 第8章 字符输入/输出和验证输入 编程练习

    1. #include <stdio.h> int main(){ char ch; int ct = 0; while ((ch=getchar()) != EOF) ct++; pri ...

  5. mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法

    转自:http://www.169it.com/article/5994930453423417575.html 为了测试sql语句的效率,有时候要不用缓存来查询. 使用 SELECT SQL_NO_ ...

  6. MATCH_PARENT和FILL_PARENT之间的区别?

    很多人表示对于很多工程中的MATCH_PARENT出现在layout中感到不明白,过去只有FILL_PARENT和WRAP_CONTENT那么 match_parent到底是什么类型呢? 其实从And ...

  7. Deep Learning Enables You to Hide Screen when Your Boss is Approaching

    https://github.com/Hironsan/BossSensor/ 背景介绍 学生时代,老师站在窗外的阴影挥之不去.大家在玩手机,看漫画,看小说的时候,总是会找同桌帮忙看着班主任有没有来. ...

  8. Java Code Examples for org.apache.ibatis.annotations.Insert

    http://www.programcreek.com/java-api-examples/index.php?api=org.apache.ibatis.annotations.Insert htt ...

  9. PHP写的爬虫,爬指定网站页面上的各种图片

    打算用php实现一个爬虫,这是爬指定页面的图片的一段程序,其他的部分还没调试好,先把这个放上来 <?php $string=file_get_contents("http://www. ...

  10. js文件引用的问题顺带复习css引用

    js文件包含在<script>块中用scr引用,css在link和@import来引用,css不是本篇的重点,直接引用一个博主的总结: “ 区别1:link是XHTML标签,除了加载CSS ...