Oracle 的伪列
Posted 融英数据分析师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 的伪列相关的知识,希望对你有一定的参考价值。
在 Oracle的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。接下来学习两个伪列:ROWID和 ROWNUM。
ROWID(select * 查不出的列)
SELECTROWID,ENAME FROM EMP WHERE SAL>2000;
ROWNUM(只能从1开始查询)
在查询的结果集中,ROWNUM为结果集中每一行标识一个行号,第一行返回1,第二
行返回2,以此类推。通过ROWNUM伪列可以限制查询结果集中返回的行数。
查询出员工表中前5 名员工的姓名,工作,工资。
SELECTROWNUM,ENAME,JOB,SAL FROM EMP WHERE ROWNUM<=5;
selectrownum, R. * from emp R where rownum<=5;
查询出表EMP中第 5 条到第10 条之间的记录。(将rownum作为临时表)
select* from (select rownum as num , R.* from emp R where rownum<=10)E
whereE.num>=5 and E.num<=10;
select* from (select e.*,rownum rn from (select * from emp) e
whererownum<=10) where rn>=5;
此处可用交集来计算
SELECT ROWNUM,ENAME,JOB,SAL FROM(SELECT ROWNUM,ENAME,JOB,SAL FROM EMP
ORDER BY SAL DESC) E WHERE ROWNUM<=5;
工资排在前5的姓名,职务,工资。
SELECT * FROM (SELECT ROWNUMAS NUM,ENAME,JOB,SALFROM (SELECT ROWNUM,ENAME,JOB,SAL FROM EMP
ORDER BY SAL DESC) E ) T
WHERE T.NUM=5;
找出工资第五的员工的姓名,职务,工资。
ROWNUMAS NUM:作为一个列,而不是伪列
、
删除重名的人员信息
DELETEFROM EMP1 E WHERE E.EaMPNO>
(SELECTMIN(EMPNO) FROM EMP1 E1 WHERE E.ENAME=E1.ENAME
GROUPBY ENAME);
删除表内重复的数据
delete from bbbe where rowid <>(select max(rowid)from bbb e1
where e.a=e1.aand e.b=e1.b and e.c=e1.c);
以上是关于Oracle 的伪列的主要内容,如果未能解决你的问题,请参考以下文章