美文网首页
rowid 和rownum

rowid 和rownum

作者: 陈光环_18 | 来源:发表于2020-11-01 11:42 被阅读0次

    ROWID是 ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个 相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。 ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中数据行时, 根据每一行数据的物理地址信息编码而成的一个伪列。所以根据一行数据的ROWID能 找到一行数据的物理地址信息。从而快速地定位到数据行。数据库的大多数操作都是 通过 ROWID来完成的,而且使用 ROWID来进行单记录定位速度是最快的。我们可以 将其用于删除重复数据。

    ROWNUM是一种伪列,它会根据返回记录生成一个序列化的数字。排序后的 结果集的顺序号 ,每一个结果集 都有自己顺序号 ,不能直接查询大于1的数。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出。 例如实现分页操作。

    ps: oracle 中 索引从1开始,java 程序 从0开始

    1、删除重复数据 :删除重复记录

    – 每条记录的唯一标识

    select s.* , rowid from tb_student s;

    –找出 保留的rowid

    select min(rowid) from tb_student group by name,course;

    –删除

    delete from tb_student where rowid not in (select min(rowid) from tb_student group by name,course)

    2、rownum

    rownum :1、必须排序 2、不能直接取大于1 的数

    –最底层 rownum 数据库默认顺序号 -->没有用的

    select emp., rownum from emp;

    select emp., rownum from emp order by sal ;

    –自己 排序后结果集的顺序号

    select e.*, rownum from (select * from emp order by sal desc) e;

    相关文章

      网友评论

          本文标题:rowid 和rownum

          本文链接:https://www.haomeiwen.com/subject/uwmyvktx.html