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;
  • 相关阅读:
    匈牙利算法demo
    linux/windows 文件共享--Samba环境搭建
    神经网络参数量和计算量计算
    C/C++ 开发中使用第三方库常见问题总结
    linux 如何更改docker的默认存储磁盘
    目录下文件递归查找
    c++ 项目开发技巧
    Finding Tiny faces 思想解析
    美女与硬币问题
    深度优先遍历解决连通域求解问题-python实现
  • 原文地址:https://www.cnblogs.com/nnnnmmmm/p/10825650.html
Copyright © 2011-2022 走看看