【功能】
rownum和rowid,都属于系统字段,查询数据库中任何表都有该字段,该字段不需要创建。
rownum与rowid的区别:
rownum是逻辑地址序号(随查询结果显示的数据条数而变化),可以限制查询结果的行数;
rowid是物理地址(固定不变的)。
/数据记录的逻辑地址rownum/
【示例】
1)用rownum可以随机抽取表中某几行数据;
示例:select * from tb_det_prov where rownum<10;
2)用rownum可以将已经排序好的结果,提取出TOP(前几名)的排行
示例:统计某表TOP5的数据明细
select *
from
(
select *
from tb_det_prov
order by prov_id desc
)
where rownum <=5 ;
3)rownum可以当表数据的序号使用;
示例:
select rownum ,t.* from tb_det_prov t;
【注意事项】
1.rownum可以放在where后面当做条件使用,但只能写成rownum<某个数字,或rownum<=某个数字,大于或等于是无法满足的
示例:select * from tb_det_prov where rownum>12;(大于或等于是无法满足的)
示例1:查询以下表中TOP5的数据
select * from tb_det_prov where rownum<=5;
示例2:查询以下表中TOP20的数据
select * from tb_det_prov where rownum<21;
2.rownum可以放在select后面当做序列使用
示例:select rownum,prov_name from tb_det_prov;
/数据记录的物理地址rowid/
【示例】
1)查询表中的rowid信息;
select rowid ,t.* from tb_det_prov t;
2)可以用于数据的手工导入,等同于for update的功能(具体详见for update);
select t.*,t.rowid from tdw_lj_01 t;
select * from tdw_lj_01 for update;
3)可以快速删除表中的某条(某部分)数据;
delete from tb_det_prov t where rowid=‘AABve9AAMAAELbrAAA’;
commit;
select decode(rownum,‘1’,‘3’,‘2’,‘8’),rownum
from dual
connect by rownum<=10