博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle查重和oracle分页
阅读量:4552 次
发布时间:2019-06-08

本文共 977 字,大约阅读时间需要 3 分钟。

oracle查重和oracle分页

查重

rowid列

rowid是一个伪列,在每个数据库中的每个表都存在。但是我们在查询时,默认不返回这一列。这一列的作用是用来区分数据表中的每一行数据,和主键 ID 有相同作用。但一般主键只能保证在当前表中不重复。

我们利用rowid永远不会重复这个特性对表中的数据查重。

案例:

使用 rowid 查重  

(同一个表,表1和表2是同一个表的别名)

select * from 表1 where exists(select * from 表2     where 表1.name=表2.name     and 表1.password=表2.password  and 表1.rowid>表2.rowid);

使用主键 id 查重

select * from 表1 where exists(select * from 表2     where 表1.name=表2.name     and 表1.password=表2.password  and 表1.id>表2.id);

删除查出的重复数据

delete from 表1 where exists(select * from 表2     where 表1.name=表2.name     and 表1.password=表2.password  and 表1.rowid>表2.rowid);

分页

rownum伪列

rownum也是一个伪列。他与rowid不同的是,rowid在数据库中物理上是存在的,知识默认查询时不返回。而rownum则在物理上就不存在。

注意,rownum不能使用 rownum>?。rownum是从1开始查询的,先取值(第一次取到的值是1,即1>?),满足条件赋值,不满足则抛弃,所以将会永远1>?;将永远取不到值。

案例:

--先查询出下标小于10的数据 select 表.*,rownum from 表 where rownum<10; --完整的语句  注意使用rownum别名 select * from (select 表.*,rownum r from 表 where rownum<10)where r>5; ​

转载于:https://www.cnblogs.com/nnnnmmmm/p/10825650.html

你可能感兴趣的文章
垂直居中的几种实现方法
查看>>
UILabel标签文字过长时的显示方式
查看>>
H5离线缓存机制-manifest
查看>>
比较:I/O成员函数getline() 与 get()(第二种用法)的用法异同
查看>>
201671010118 2016-2017-2《Java程序设计》 第十一周学习心得
查看>>
Get Sauce(状压DP)
查看>>
Office2007 升级到 office2010
查看>>
SpringBoot整合Hibernate
查看>>
PPT1 例2
查看>>
extern外部方法使用C#简单例子
查看>>
血液循环结构
查看>>
SQL Server统计数据库中表个数、视图个数、存储过程个数
查看>>
设计模式:观察者模式
查看>>
JVM体系结构之六:堆Heap之1
查看>>
TCP之二:TCP的三次握手与四次分手
查看>>
6.28 加法作业
查看>>
【bzoj2829】信用卡凸包 凸包
查看>>
oracle 游标
查看>>
jquery简单的表单验证充值数量
查看>>
大叔手记(1):使用Visual Studio的查找与替换替代默认的系统搜索
查看>>