复习巩固:oracle如何实现去重和分页
一: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如何实现去重和分页的更多相关文章
- oracle如何实现去重和分页
一:oracle实现去重: user数据表: 分两步:1.查询重复数据 2.删除重复数据 1.查询重复数据:在oracle中实现查询重复数据,可以借助于rowid这个伪列.oracle中每个表物理上 ...
- Mybatis oracle多表联合查询分页数据重复的问题
Mybatis oracle多表联合查询分页数据重复的问题 多表联合查询分页获取数据时出现一个诡异的现象:数据总条数正确,但有些记录多了,有些记录却又少了甚至没了.针对这个问题找了好久,最后发现是由于 ...
- oracle 多字段去重查询
oracle 多字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示 需要对表BASE_MRI_DEVICE的COMPNAME.F ...
- Hibernate使用Criteria去重distinct+分页
写在前面: 最近在项目中使用了Criteria的分页查询,当查询的数据没有重复的记录还好,但是当数据有关联并出现重复记录的时候,就要去重,那么就会出现查询的记录数与实际的不一致的问题.这里也记录一下解 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- MySql、SqlServer、Oracle 三种数据库查询分页方式
SQL Server关于分页 SQL 的资料许多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是颠末预编译的,执行效率高,也更灵活 ...
- Oracle数据库和DB2数据库分页SQL的区别举例
--------------------------ORACLE数据库分页SQL举例------------------------------------------------ SELECT * ...
- Oracle 表数据去重
Oracle数据库中重复数据怎么去除?使用数据表的时候经常会出现重复的数据,那么要怎么删除呢?下面我们就来说一说去除Oracle数据库重复数据的问题.今天我们要说的有两种方法. 一.根据rowid来去 ...
- [数据库]Oracle和mysql中的分页总结
Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...
随机推荐
- react 模板备份
/** * Created by hldev on 17-6-14. * 上市公司详情展示界面 */ import React, {Component} from "react"; ...
- WCF之Windows宿主
WCF之Windows宿主(可安装成服务自动并启动) WCF之Windows宿主(可安装成服务自动并启动) 创建解决方案WCFServiceDemo 创建WCF服务库(类库或WCF服务库)WCFSer ...
- python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件
描述:将指定路径下的某文件夹备份到一个zip文件 代码: #!/usr/bin/python # -*- coding: UTF-8 -*- # backupToZip - Copies an ent ...
- LeetCode 611. 有效三角形的个数(Valid Triangle Number)
611. 有效三角形的个数 611. Valid Triangle Number 题目描述 LeetCode LeetCode LeetCode611. Valid Triangle Number中等 ...
- Inno Setup 检测已安装的.NET Framework 版本
翻译自:http://kynosarges.org/DotNetVersion.html 由 Jordan Russell 写的 Inno Setup 是一个伟大的安装脚本程序,但缺乏一个内置的函数来 ...
- Linux忘记root密码操作方法
此方法为:进入单用户模式,直接修改新密码覆盖掉以前的root密码. 操作步骤: 1.进入单用户模式 2.修改root密码 1.进入单用户方法: 1)启动Linux时,通过按上下键(其他键也可以)让Li ...
- magicbook 踩坑
新买了 magicbook pro 16.1寸的荣耀笔记本,在使用过程中发现了一些问题. 电脑详情 规格: magicbook pro 16.1 cpu: 锐龙 R5 操作系统: deepin 15. ...
- Android--Facebook Login with LoginButton
1.Layout文件添加Facebook的LoginBurtton <com.facebook.widget.LoginButton android:id="@+id/authButt ...
- 访问Harbor报502 Bad Gateway
Harbor启动都是多个容器的,首先查看一下是否有相关容器未启动 docker ps | grep harbor cae340214e57 goharbor/nginx-photon:v1.9.3 & ...
- 转:深入浅出Java垃圾回收机制
原文链接:http://www.importnew.com/1993.html 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解G ...