oracle_4(伪列、rowid,rownum,习题分析) 课堂笔记

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

rownum:逻辑伪列	
rowid:  物理伪列(18)    在物理硬盘上真实的存放位置
rownum: 不同SQL语句在执行时,rownum的值不一样
	 在相同SQL语句执行时,rownum的值不变(第一次查询产生rownum值,之后保持不变)
查询工资最高的前三条员工信息。
	select rownum ,ename,sal from (select *from emp order by sal desc) where rownum <=3;
	先排序生成临时表,再对临时表查询生成rownum,选择前n个
TOP -n  通用做法:
	select rownum,.... from (select *from xxx order by ...) where rownum <=n; 
rowid: 物理伪列 18位
前六位: 数据对象编号
往后数三位: 数据文件编号
往后数六位: 数据块编号
往后数三位: 行号
rownum/rowid: 删除重复数据。
思路:
	根据编号分组,将重复的数据放到一起,然后每组中只留一个数据(保留rowid最大或者最小)
筛选出要保留的数据  (select ... ,min(rowid)from emp group by ... );
删除不保留的
	delete from emp where ... not in(要保留的数据);
</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值