一:oracle实现去重:

user数据表:

分两步:1.查询重复数据  2.删除重复数据

1.查询重复数据:
在oracle中实现查询重复数据,可以借助于rowid这个伪列。oracle中每个表物理上都存在一个rowid的列,这个列
是每行数据在oracle中唯一标识,每个表的主键可以保证数据在本表中不重复,rowid可以保证该条数据在数据库
中的所有表中都不重复。

 --查询重复数据 用户名和密码都相同的数据叫重复数据
select u1.*,rowid from users u1 where exists ( select 1
from users u2 where u1.username=u2.username and u1.password=u2.password and u1.rowid>u2.rowid );
--删除重复数据
delete from users u1 where exists ( select 1 from users u2 where u1.username=u2.username and
u1.password=u2.password and u1.rowid>u2.rowid );

例:把用户表的主键id加上,去重重复数据,只要用户名相同,就认为这条数据重复了。

delete from users u1 where exists ( select 1 from users u2 where u1.username=u2.username and
u1.id>u2.id);

二:oracle实现分页

mysql中怎么实现分页,使用limit m,n m从第几条数据开始取,下标从0开始。n代表最多取多少条数据。
在oracle中不能再使用limit进行分页。可以使用rownum来进行分页。和rowid差不多,rownum也是一个伪列,
rowid是物理上存在的一个伪列,rownum是物理上不存在的。只在查询的时候赋值。用的时候和rowid差不多。

举例:
查询前5条数据:
select * from emp where rownum <6;
查询第6到第10条数据:(错误的)
select * from emp where rownum>5 and rownum<11;
执行直接sql语句,查询不出结果,是因为rownum如果使用大于号查询不到数据:

rownum是先查询再赋值。如果查询返回的数据满足条件就获取一个rownum赋值,rownum从1开始赋值,接着 2 3 4 5 6

解决方法:

通过子查询把rownum从伪列变成实际的列。

select * from (select e.*,rownum r from emp e where rownum<11) where r>5

对emp表按empno倒序排列,获取从第6到第10条数据。

select * from ( select e.*,rownum r from ( select * from emp order by empno desc)e where rownum<11 )
where r>5;

oracle如何实现去重和分页的更多相关文章

  1. 复习巩固:oracle如何实现去重和分页

    一:oracle实现去重: user数据表: 分两步:1.查询重复数据  2.删除重复数据 1.查询重复数据:在oracle中实现查询重复数据,可以借助于rowid这个伪列.oracle中每个表物理上 ...

  2. Mybatis oracle多表联合查询分页数据重复的问题

    Mybatis oracle多表联合查询分页数据重复的问题 多表联合查询分页获取数据时出现一个诡异的现象:数据总条数正确,但有些记录多了,有些记录却又少了甚至没了.针对这个问题找了好久,最后发现是由于 ...

  3. oracle 多字段去重查询

      oracle 多字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示 需要对表BASE_MRI_DEVICE的COMPNAME.F ...

  4. Hibernate使用Criteria去重distinct+分页

    写在前面: 最近在项目中使用了Criteria的分页查询,当查询的数据没有重复的记录还好,但是当数据有关联并出现重复记录的时候,就要去重,那么就会出现查询的记录数与实际的不一致的问题.这里也记录一下解 ...

  5. MySQL、Oracle和SQL Server的分页查询语句

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...

  6. MySql、SqlServer、Oracle 三种数据库查询分页方式

    SQL Server关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的,执行效率高,也更灵活 ...

  7. Oracle数据库和DB2数据库分页SQL的区别举例

    --------------------------ORACLE数据库分页SQL举例------------------------------------------------ SELECT * ...

  8. Oracle 表数据去重

    Oracle数据库中重复数据怎么去除?使用数据表的时候经常会出现重复的数据,那么要怎么删除呢?下面我们就来说一说去除Oracle数据库重复数据的问题.今天我们要说的有两种方法. 一.根据rowid来去 ...

  9. [数据库]Oracle和mysql中的分页总结

    Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...

随机推荐

  1. 最长回文子窜O(N)

    字符窜同构的性质:同构字符窜拥有最小和最大的表示方法: 最长回文子窜: 1.首先暴力法:(n三方) 枚举每个起点和终点,然后单向扫描判断是不是回文子窜: 2.中心扩散法,(N方) 枚举每个中点,向外扩 ...

  2. BUG 测试计划

       性能追求 目前状况 测试标准 APP平稳运行,无crush现象   快速下拉翻页时,崩溃退出     要求多人使用,均流畅无异常退出方可               页面的放大缩小不会造成页面显 ...

  3. Java2年开发工作经验面试总结

    Java2年开发工作经验面试总结最近换了个公司,从二月底开始面,面到三月底,面了有快二十五家公司.我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些 ...

  4. 初识Cobalt Strike

    简介 Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透工具,集成了端口转发.服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,jav ...

  5. mybatis源码学习:插件定义+执行流程责任链

    目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...

  6. 前端基础进阶(七)-前端工程师最容易出错的问题-this关键字

    我们在学习JavaScript的时候,因为对一些概念不是很清楚,但是又会通过一些简洁的方式把它给记下来,那么这样自己记下来的概念和真正的概念产生了很强的偏差. 当然,还有一些以为这个是对的,还会把它发 ...

  7. WFS: postgresql(postgis)和shp文件查询效率对比

    对GeoServer上的WFS的各种数据源查询效率感兴趣,做个测试.本次测试了Postgresql.geopackage.shp文件三种数据源的查询效率,无论是本机还是服务器环境,pg存储查询效率都比 ...

  8. 吕建文 20199303《Linux内核原理与分析》第十二周作业

    ShellShock攻击实验 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,学生需要亲手重现攻击来理解该漏洞 ...

  9. Qt 正则表达式检查 IP 格式

    KillerSmath 2018年6月29日 下午10:41 @Pranit-Patil Hi there. Like @jonB says above, you should to replace\ ...

  10. Windows SDK 的 ctype.h 里有一些有用的函数,例如字符串的大小写转换

    #define _tolower(c) ((c) - 'A' + 'a') #define _toupper(c) ((c) - 'a' + 'A')