码迷,mamicode.com
首页 > 数据库 > 详细

oracle中rownum和rowid的区别

时间:2015-09-30 16:33:11      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

rownum和rowid的区别总括:

rownum和rowid都是伪列,但是两者的根本是不同的。

rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownum不同,

但是rowid是物理结构上的,在每条记录insert到数据库中时,都会有一个唯一的物理记录 。

 

  • rownum分页:

    使用rownum对oracle分页

  • rowid去重,主键仍唯一,仅去掉名字和年纪一样的重复学生:
SELECT a.rowid,a.* FROM student a 
       WHERE a.rowid NOT IN 
             (SELECT MAX(b.rowid) FROM student b WHERE a.sname = b.sname AND a.sage = b.sage);

上面这条sql语句因为 源和目标 交叉着一起查询,理解会有困难.

中文释意(从内层select开始理解): 

1.从studnetA表中开始查找和studentB表中同样名字和同样年纪的学生.

2.把这些同样名字的学生的最大rowid找出来.

3.从studentA表中查找不在最大rowid范围内的那些学生.

真正使用的去重语句为:

DELETE FROM student a 
       WHERE a.rowid NOT IN 
             (SELECT MAX(b.rowid) FROM student b WHERE a.sname = b.sname AND a.sage = b.sage);

  rowid的更详细参考资料: 

  高效删除Oracle数据库中重复数据的方法

  oracle中rownum和rowid的区别

oracle中rownum和rowid的区别

标签:

原文地址:http://www.cnblogs.com/whatlonelytear/p/4849344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!