zoukankan      html  css  js  c++  java
  • Oracle删除重复数据记录

    删除重复记录,利用ROWID 和MIN(或MAX)函数, ROWID在整个数据库中是唯一的,由Oracle自己产生和维护,并唯一标识一行(无论该表中是否有主键和唯一性约束),ROWID确定了每条记录在哪个数据文件、哪个块上。

    利用not in:

    delete from manager 

    where ROWID NOT IN( select  MIN(ROWID) from manager group by mgrno);

    删除之前的数据:

    SQL> select * from manager;

         MGRNO MNAME                          JOB
    ---------- ------------------------------ --------------------------
    SALARY
    --------------------------------------------------------------------
            11 Jane                           j1
    1000

            11 Jane                           j2
    1000

            12 Dane                           j1
    1200

            11 Jane                           j1
    1000

            13 Kate                           j0
    1300

    删除后:

    SQL> select * from manager;

         MGRNO MNAME                          JOB
    ---------- ------------------------------ ------------------------------
    SALARY
    ---------------------------------------------------------------------------
            11 Jane                           j1
    1000

            12 Dane                           j1
    1200

            13 Kate                           j0
    1300


    已选择3行。

    利用不等于

    delete from  manager  a where ROWID != (select  MAX(ROWID)

    from manager b where a.mgrno =b.mgrno)

    利用临时表:

    创建一个临时表 tem_manager , 该表中存放的数据和表manager 的相同,只是该表中不存放重复记录。

    create table tem_manager

    as

    (select  distinct mgrno,mname,job,salary from manager);

    然后删除表manager中的数据:

    truncate table manager;

    把临时表中的数据插入到原来的表manager中:

    insert into  manager

    select * from tem_manager;

  • 相关阅读:
    使文字背景透明
    文件拷贝
    鼠标选取图象的实现
    刷新整个画布
    将区域的颜色取反
    用API处理位图
    用TImageList动态画透明图片
    将bmp文件转换为jpg文件
    解决phpmyadmin-1800秒超时链接失效问题
    Linux下解压命令大全
  • 原文地址:https://www.cnblogs.com/happinessqi/p/3348935.html
Copyright © 2011-2022 走看看