zoukankan      html  css  js  c++  java
  • oracle查重和oracle分页

    oracle查重和oracle分页

    查重

    rowid列

    rowid是一个伪列,在每个数据库中的每个表都存在。但是我们在查询时,默认不返回这一列。这一列的作用是用来区分数据表中的每一行数据,和主键 ID 有相同作用。但一般主键只能保证在当前表中不重复。

    我们利用rowid永远不会重复这个特性对表中的数据查重。

    案例:

    使用 rowid 查重  

    (同一个表,表1和表2是同一个表的别名)

    select * from 表1 where exists(select * from 表2 
    where 表1.name=表2.name
    and 表1.password=表2.password
    and 表1.rowid>表2.rowid);

    使用主键 id 查重

    select * from 表1 where exists(select * from 表2 
    where 表1.name=表2.name
    and 表1.password=表2.password
    and 表1.id>表2.id);

    删除查出的重复数据

    delete from 表1 where exists(select * from 表2 
    where 表1.name=表2.name
    and 表1.password=表2.password
    and 表1.rowid>表2.rowid);

    分页

    rownum伪列

    rownum也是一个伪列。他与rowid不同的是,rowid在数据库中物理上是存在的,知识默认查询时不返回。而rownum则在物理上就不存在。

    注意,rownum不能使用 rownum>?。rownum是从1开始查询的,先取值(第一次取到的值是1,即1>?),满足条件赋值,不满足则抛弃,所以将会永远1>?;将永远取不到值。

    案例:

    --先查询出下标小于10的数据
    select 表.*,rownum from 表 where rownum<10;
    --完整的语句 注意使用rownum别名
    select * from (select 表.*,rownum r from 表 where rownum<10)where r>5;
  • 相关阅读:
    DNS放大攻击
    Java并发编程(四):并发容器(转)
    关注商业价值
    样式小记
    应用程序优化
    查看当前的连接和锁
    重命名你的数据库
    转:对XML插入操作
    对数据的分页再一次思考
    不浪费自己的时间,同时也不浪费别人的时间
  • 原文地址:https://www.cnblogs.com/nnnnmmmm/p/10825650.html
Copyright © 2011-2022 走看看