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;
  • 相关阅读:
    tyvj P3737 逐个击破
    最小生成树 kruskal
    最小生成树 prim
    code2039 骑马修栏杆
    前端优化
    数组1
    数组
    序列化对象
    解决iphone横屏时字体变大问题或者内容大小不一样等...
    Media Queries详解
  • 原文地址:https://www.cnblogs.com/nnnnmmmm/p/10825650.html
Copyright © 2011-2022 走看看