注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

Oracle之数据伪列  

2012-02-12 22:10:16|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

数据伪列

数据伪列指的是用户不需要处理的列,而是由oracle自行维护的数据列,在oracle中有两个数据伪列:ROWNUMROWID

ROWNUM

ROWNUM从单词上理解是行号,实际上ROWNUM是为每一个显示的记录都会自动的随着查询生成行号,例如:

select ROWNUM,empno,ename,job,sal FROM emp;

select ROWNUM,empno,ename,job,sal FROM emp WHERE deptno=30;

分页代码:查询从第6--10条信息

SELECT * FROM (

 SELECT ROWNUM r,empno,ename,job,hiredate,sal FROM emp 

     WHERE ROWNUM<=10) temp

WHERE temp.r>5;

ROWID

ROWID表示每一行数据保存的物理地址的编号,例如,观察如下查询:

select ROWID,deptno,dname,loc FROM dept;

ROWID                  DEPTNO DNAME          LOC

------------------ ---------- -------------- -------------

AAAL+XAAEAAAAANAAA         10 ACCOUNTING     NEW YORK

AAAL+XAAEAAAAANAAB         20 RESEARCH       DALLAS

AAAL+XAAEAAAAANAAC         30 SALES          CHICAGO

AAAL+XAAEAAAAANAAD         40 OPERATIONS     BOSTON

每一条记录ROWID都不会重复,所以及表中所有数据都重复了,ROWID也不会重复,

例如:AAAL+XAAEAAAAANAAA

·数据对象号: AAAL

·相对文件号: AAE

·数据块号 : AAAAAN

·数据行号:  AAA

题目: 删除表中重复数据。

Oracle之数据伪列 - 湘雅之梦 - nbsp爱的天空

首先查找有重复数据的数据:

SELECT dname,loc,MIN(ROWID) 

FROM dept

GROUP BY dname,loc

HAVING COUNT(deptno)>1;

数据插入的早,ROWID就小,首先我们能根据ORGER BY得到所有重复数据中的中ROWID最小的一条。然后删除别的数据。

Oracle之数据伪列 - 湘雅之梦 - nbsp爱的天空



  评论这张
 
阅读(243)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017