我们来自五湖四海,不为别的,只因有共同的爱好,为中国互联网发展出一分力!
领航时时彩重庆版

重庆时时彩定会下注:浅谈oracle中rowid和rownum

2014年05月11日23:21 阅读: 32441 次

领航时时彩重庆版 www.9nwl5.cn 标签: 浅谈oracle中rowid和rownu

[ 概要 ]

刚刚接触oracle的同学可能常?;岜籸owid和rownum这两个词弄混, 弄清楚这两个家伙对于我们写sql会有很大的帮助, 下面偶就抛砖引玉, 简单地谈谈他们之间的区别吧.

 [ 比较 ]

rowid和rownum都是oracle中的伪列, 但他们还是存在本质区别:

rowid: 是物理地址, 用于定位数据表中数据的位置, 它是唯一的且不会改变.

rownum: 是根据查询的结果集给每行分配的一个逻辑编号, 查询结果不同, rownum自然不同.

对于同一条记录, 查询条件不同, rownum会不同, 但是rowid将不变.

示例: 查询公司所有的员工

select rowid, rownum, empno, ename from emp;

\

示例: 查询公司员工姓名包含'S'

select rowid, rownum, empno, ename from emp where ename like '%S%';

\

细心的同学不难发现, 对于一行记录, rowid没变, rownum变了. 例如: 姓名为'SMITH'的员工.

[ 陷阱 ]

1. rownum只支持符号<、<=、!=, 不支持>, >=, =, between...and

?
1
select * from emp where rownum > 10 -- 没有结果
?
1
2
3
select *
  from (select rownum row_num, e.* from emp e) emp_temp
 where emp_temp.row_num > 10; -- 可以获取十位以后记录

解释一下: 因为rownum是对结果集加的一个伪列, 即先查到结果集之后再加上去的一个列(强调: 要有结果集). 简单地说rownum是符合条件结果的序列号, 它总是从1开始排位, 所以你选出的结果不可能没有1, 而有大于1的值.

有了上面的知识, 我们就不难解释以下现象:

① 为什么select * from emp where rownum != 10 总是返回前9条记录?

因为查询到结果集后, 显示完第9条记录, 之后的记录都是 != 10.

② 为什么rownum > 1 查不到一条记录, 而rownum > 0 或 rownum >= 1 却总显示所有记录?

因为rownum是在查询到结果集之后加上去的, 它总是从1开始.

③ 为什么between 1 and 10 或者 between 0 and 10 能查到结果, 而between 2 and 10却得不到结果?

原因同上, 少了rownum=1就像空中楼阁一样不能存在. 

[ 应用 ]

废话扯了一箩筐, 这两哥们到底有啥用呢? 嘿嘿, 别急, 下面就上正菜...

问题: 获取薪水排名前三的员工

分析: 如果是sql server就好了, 我们可以使用top关键字, oracle中我们用rownum也能解决

?
1
2
3
4
select *
  from (select * from emp order by sal desc)
 where rownum <= 3
 order by rownum asc
分享到: 更多
©2019 安全焦点 版权所有.

  • 这些“难民”大部分好吃懒做,无一技之长,犯罪率又高,你要接回去就噹祖宗供着吧。[哈哈] 2019-04-23
  • 铜梁这位30岁小伙抱上吉他骑着摩托去北极过生! 2019-04-23
  • 2018年世界杯防骗宝典!拒绝和骗子一起狂欢! 2019-04-16
  • [微笑]其实很简单就能破这个局:立法禁止通过房地产二次交易获利,炒房就会被杜绝,炒房一旦被杜绝,房价就会受正常供需关系影响波动在合理范围内。 2019-04-16
  • 中国人打仗?被逗了。独生子一代、捧在手里长大的90后00后、站在甲板上飒爽英姿、硝烟战火血肉横飞的场景、会失去行动能力的。这不是耸人听闻。 2019-04-14
  • 乌鲁木齐市水磨沟区开建两座立体停车库 2019-04-14
  • 吕洪蕾:网络信息技术在干部工作中的运用研究 2019-04-04
  • 聚焦中央经济工作会议 2019-03-30
  • 沈杰:在北京打拼的“90后”台湾律师 2019-03-30
  • 法国总统马克龙首次访华 法国居民期待成果 2019-03-25
  • 【新媒体矩阵】长城编小厨 2019-03-25
  • 1949年刚刚进入北平的人民日报校对科夜班工作场面 2019-03-22
  • 江西省“放管服”改革再出实招 2019-03-21
  • 让“毒跑道”绝迹 内蒙古各方联手共同监管校园跑道 2019-03-20
  • 宁夏石嘴山支队隆重举行退伍老兵欢送仪式 2019-03-19
  • 735| 435| 155| 201| 967| 575| 277| 391| 949| 412|