首页 > 其他 > 详细

rownum&&rowid

时间:2020-06-27 21:30:54      阅读:60      评论:0      收藏:0      [点我收藏+]

伪列:不属于任何一张表,但是会被所有的表共享

rownum:逻辑序列1 2 3 4....
rowid:物理序列(18)真实的存放位置

rownum:不同的SQL语句在执行时,rownum的值不一致
在相同SQL语句在执行时,rounum的值不变


查询工资最高的前三条员工信息
select rownum,ename,sal from
(select * from emp order by sal desc)
where rownum<=3;

top-n 前n个数据:
select rownum,...from (select * from xxx order by ...) where rownum <= n;


rownum/rowid:删除重复数据


create table mystudent(
stuno number,
stuname varchar2(10),
stuage number
);

insert into mystudent values(1,‘zs‘,23) ;
insert into mystudent values(1,‘zs‘,23) ;

insert into mystudent values(2,‘ls‘,24) ;
insert into mystudent values(2,‘ls‘,24) ;

insert into mystudent values(3,‘ww‘,25) ;
insert into mystudent values(3,‘ww‘,25) ;

insert into mystudent values(4,‘zl‘,26) ;


delete from mystudent where stuno in(
select distinct stuno from mystudent);//不可用

去重:distinct

 


rowid:根据插入的顺序 依次递增


rownum:逻辑伪列

rowid:物理伪列,18位:
前6位: 数据对象编号
依次往后数3位:数据文件编号
依次往后数6位:数据块编号
依次往后数3:行号
思路:
根据编号分组(将重复的数据 放到一组) ,然后在每组中只保留一个

保留:rowid最小的
delete from mystudent where rowid not in (select min(rowid) from mystudent group by stuno );

rownum&&rowid

原文:https://www.cnblogs.com/mayouyou/p/13199841.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!