精华内容
下载资源
问答
  • Oracle删除表中重复数据有多种方法,网上较多的一种如下: delete from gljyjl jl where (jl.djbbh,jl.bgsbh) in (select djbbh,bgsbh from gljyjl group by djbbh,bgsbh having count(*) > 1) and rowid not in ...

    本文是针对部分字段重复的表,对于表中完全重复的数据可以使用distinct。

    Oracle删除表中重复数据有多种方法,

    网上较多的一种如下:

    delete from gljyjl jl where (jl.djbbh,jl.bgsbh) in 
    (select djbbh,bgsbh from gljyjl group by djbbh,bgsbh having count(*) > 1) 
    and rowid not in (select min(rowid) from gljyjl group by djbbh,bgsbh having count(*)>1);

    但此方法执行效率太低,表中有40多万条数据,重复数据有三万多。此方法执行了几个小时,还没结束。。。

    通过查看该语句的执行计划,发现竟需要执行46个多小时!!!



    无奈只能放弃此方法!


    最终想到一种解决方案:可以先删除表中重复的一部分数据,也就是说分多次删除重复数据。


    delete from gljyjl where rowid in (select min(rowid) from gljyjl group by djbbh,bgsbh having count(*) > 1);

    该SQL语句很简单,通过djbbh,bgsbh两个字段进行分组,选取出这两个字段重复的记录,

    获得每个分组中rowid最小的那条记录的rowid,然后把这条记录删除。

    这样便可以把每组中重复的记录都删掉一条。

    之后重复执行该条SQL语句,直到所有的重复记录全部删除完就可以了。



    但如果每组中重复的数据有上千条,就需要重复执行该SQL语句上千次。

    这样便会操作上千次了,不是太方便!

    解决办法是编写存储过程,重复执行该SQL语句,直到受影响的SQL为0。

    create or replace procedure deleteEquals
    as
    begin 
      loop
        delete from gljyjl where rowid in (select min(rowid) from gljyjl group by djbbh,bgsbh having count(*) > 1);
        dbms_output.put_line('删除了'||to_char(sql%rowcount)||'行');
        exit when sql%rowcount = 0;
      end loop;
    end;
    /



    执行该存储过程!


    exec deleteEquals();


    该表中的重复数据便会全部删除!



    展开全文
  • Mysql删除表中重复数据,已解决

    万次阅读 2018-12-21 08:54:13
    如何快速删除数据表中重复【某个字段重复】的数据呢,比如我customer表中有一个cus_nmae字段,如果要删除cus_name字段的重复记录,且保留最小主键【这里customer的主键是cid】,首先想到的sql应该如下: DELETE ...

    如何快速删除数据表中重复【某个字段重复】的数据呢,比如我customer表中有一个cus_nmae字段,如果要删除cus_name字段的重复记录,且保留最小主键【这里customer的主键是cid】,首先想到的sql应该如下:

    DELETE
    FROM
        customer
    WHERE
        cus_name IN (
            SELECT
                cus_name
            FROM
                customer
            GROUP BY
                cus_name
            HAVING
                count(cus_name) > 1
        )
    AND cid NOT IN (
        SELECT
            min(cid)
        FROM
            customer
        GROUP BY
            cus_name
        HAVING
            count(cus_name) > 1
    );

    这样执行会报错:Err] 1093 - You can't specify target table 'customer' for update in FROM clause;原因是:更新数据时使用了查询,而查询的数据又做了更新的条件,mysql不支持这种方式。oracel和msserver都支持这种方式。怎么解决这个问题?再加一层封装,如下:

    DELETE
    FROM
        customer
    WHERE
        cus_name IN (
            SELECT
                cus_name
            FROM
                (
                    SELECT
                        cus_name
                    FROM
                        customer
                    GROUP BY
                        cus_name
                    HAVING
                        count(cus_name) > 1
                ) a
        )
    AND cid NOT IN (
        SELECT
            min(cid)
        FROM
            (
                SELECT
                    min(cid) AS cid
                FROM
                    customer
                GROUP BY
                    cus_name
                HAVING
                    count(cus_name) > 1
            ) b
    );

    执行以上这条sql语句不会再报错,并且成功删除了cus_name的所有重复记录,只保留了cid最小的那条;大功告成!

    展开全文
  • sql server如何删除表中重复数据

    千次阅读 2018-08-25 21:39:18
    1.将查询到的无重复数据存入临时表中 2.删除的内容 3.将临时插入到原表中 4.删除临时 理解起来是比较简单的,这里举个例子 --创建 CREATE TABLE AA( Id int, Name varchar(10) ) --为添加信息 ...

    当我们需要删除表中重复的数据的时候,该如何操作呢?

    具体操作分为四个步骤:

    1.将查询到的无重复数据存入临时表中

    2.删除原表的内容

    3.将临时表插入到原表中

    4.删除临时表

    理解起来是比较简单的,这里举个例子

    --创建表
    CREATE TABLE AA(
        Id int,
        Name varchar(10)
    )
    --为表添加信息
    INSERT INTO AA VALUES(1,'AAA')
    INSERT INTO AA VALUES(2,'BBB')
    INSERT INTO AA VALUES(1,'AAA')
    INSERT INTO AA VALUES(1,'AAA')
    INSERT INTO AA VALUES(2,'BBB')
    --进行删除重复数据操作
    --无重复查询并存入临时表
    SELECT * DISTINCT INTO BB FROM AA
    --删除原表
    DELETE TABLE AA
    --将临时表插入到原表
    INSERT INTO AA SELECT * FROM BB
    --删除临时表
    DROP TABLE BB
    
    

    最终结果

    去除了多余重复的数据

     

    展开全文
  • sql删除表中重复数据的一个小技巧

    万次阅读 2018-07-11 15:44:48
    有时候我们需要删除表中的重复数据,如果手动去删除的话很慢,写sql又不会写,怎么办了,咱们可以...这样就实现了一个删除重复数据的效果哈哈哈。去重查询demo如下:select DISTINCT(name) from tbl_user_info这条s...

    有时候我们需要删除表中的重复数据,如果手动去删除的话很慢,写sql又不会写,怎么办了,咱们可以这样来波骚操作。使用DISTINCT关键字去重查询,然后把去重后的查询结果导出成sql语句,再把表中的数据全部删除,然后执行导出的sql把数据重新插入进去。这样就实现了一个删除重复数据的效果哈哈哈。去重查询demo如下:

    select DISTINCT(name) from tbl_user_info

    这条sql的意思是查询过滤掉tbl_user_info表中name字段内容重复的数据


    展开全文
  • Oracle如何删除表中重复数据

    千次阅读 2007-11-29 13:08:00
    我们可能会出现这种情况,某个原来设计不周全,导致里面的数据数据重复,... 一、对于部分字段重复数据删除 先来谈谈如何查询重复的数据吧。 下面语句可以查询出那些数据是重复的: select 字段1,字段2,
  • 1.在表中(表名:table 主键:id)增加一个字段rownum,类型为serial 2.执行语句: delete from table where rownum not in(  select max(rownum) from table group by id  ) 3.最后删除rownum
  • mysql 删除表中重复数据的一种方法

    千次阅读 2011-01-25 12:56:00
    1。创建结构相同的临时 ...将去掉重复记录的子查询添加到临时表中 3。删除原来的 4。重命名临时到原来的   1、create table client_old like client   2、insert into client_old select
  • 在一个表中有一个自动增长列c1,同时又有两个外健列分别指向另外...在网上查询了一下关于删除重复键的一些做法,很多是用拷贝原的一个distinct查询表格到临时,然后删除原,最后拷贝临时到原。近似代码如下:
  • MYSQL 删除表中重复数据

    万次阅读 2018-08-23 15:30:43
    test表中name字段信息有重复,想进行过滤删除重复数据 删除重复数据之后的预期结果(不考虑id):   方法一: 用 create ......select......group by ...... 先创建临时tab,新tab的数据时从test表中分组...
  • 1、根据指定条件查询表中重复记录 select * from t_official_sys_user where USER_NAME in (select USER_NAME from (select USER_NAME from t_official_sys_user group by USER_NAME having count(USER_NAME) > 1...
  • 达梦数据库,删除表重复数据

    千次阅读 2020-11-01 20:55:14
    我们在数据库运维环境有时会出现需删除表中重复数据的情况,比如说,导入时重复导入了,这时候我们怎么办?如何删除重复的数据,保证数据的正确性和完整性? 操作系统:中标麒麟6.0 数据库系统:DM8 我们先来...
  • Sys_WFApproveLog_bak ,表中四个字段(logid,ver,wa,id) , 有三条记录重复,值都相同, 只有ver字段不同。 需要 删除其中的两条,只保留一条数据。如何实现,谢谢了。 logid ver wa id 7933 1 2 1 7933 2...
  • MySql 删除表中重复数据(但要保留一条)

    万次阅读 热门讨论 2018-01-19 14:18:54
    今天遇到一个问题。相同的数据在同一张表里出现了多次。...表中原始数据如下 首先我们要查看数据库那些数据重复了,执行如下SQL SELECT * FROM (SELECT COUNT(*) as num,c_1,c_2 FROM table_a GROUP
  • SQLServer 删除表中重复数据 1、根据HXM字段查询表中重复的数据 select HXM from T_contract_trading_inquiry_Ht where FKSQ_ID=’” + fksq_id + “’ group by HXM having count(HXM) &amp...
  • 链表--如何从链表中删除重复数据

    千次阅读 2019-06-03 21:14:57
    链表–如何从链表中删除重复数据 方法一 思路:遍历链表,将链表的数据存储到HashTable,若当前遍历的数据在HashTable存在,说明这个数据重复,可以将这个数据删除掉。 优点:时间复杂度较低。 缺点:空间...
  • Oracle 删除同一张表中重复数据

    千次阅读 2016-06-11 22:31:31
    一、部分字段重复数据删除 CREATE TABLE 临时 AS (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1) delete from 表名 a where 字段1,字段2 in (select 字段1,字段2...
  • SQL查看表中重复数据

    千次阅读 多人点赞 2014-03-18 11:30:51
    一个简单、实用、性价比高的查看表中重复数据的SQL
  • 废话不多说,只说重点! 网上说的基本上都是不靠谱的,要么每次执行只能删一条重复数据(如果重复1000次是不是准备执行1000次?...下面是参考代码(这个例子删除重复的tb_user_id只保留Id最大的一个,DDD的
  • 在ORACLE如何删除表中重复数据

    万次阅读 2008-03-07 15:04:00
    我们可能会出现这种情况,某个原来设计... 一、对于部分字段重复数据删除 先来谈谈如何查询重复的数据吧。 下面语句可以查询出那些数据是重复的: select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 ha
  • c语言实现链表中重复数据删除(5)

    千次阅读 2019-04-09 22:25:00
    对比与数组我们删除重复元素有这么一些方法:
  • SQLServer 删除表中重复数据

    千次阅读 2017-08-03 19:06:36
    3、如果表中没有唯一值的列,可以通过 ROW_NUMBER()函数来删除重复数据  重复执行插入脚本,查看数据,表中没有唯一列值 Delete T From (Select Row_Number() Over(Partition By [Name] order ...
  • 作用是踢除重复数据其中一个_id,让后面的删除语句不会删除所有数据 4.使用forEach循环根据_id删除数据 $addToSet 操作符只有在值没有存在于数组时才会向数组添加一个值。如果值已经存在于数组,$addToSet...
  • mysql查询表里的重复数据方法: 1 2 3 4 INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11')   delete from hk_test where ...
  • mysql删除数据表中重复记录保留一条

    千次阅读 2018-05-09 14:03:27
    第一种是数据表中所有的字段都重复,第二种是数据库部分字段重复 这里针对第二种情况重复: delete from app_user_verify where id not in (select a.id from (select MAX(id) as id from app_user_verify ...
  • 一、怎样查询重复数据 1. 查询一个表中所有字段都相同的记录  比如现在有一人员 (表名:peosons)  若想将姓名、编号、住址这三个字段完全相同的记录查询出来:   select p1.* from persons p1,...
  • sql删除表中重复记录 This article explains the process of performing SQL delete activity for duplicate rows from a SQL table. 本文介绍了对SQL表中重复行执行SQL删除活动的过程。 介绍 (Introduction...
  • 删除链表中重复的节点

    万次阅读 2017-11-27 09:11:57
    在一个排序的链表,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 /* public class ListNode { int val; ListNode next = ...
  • MySQL中删除重复数据只保留一条

    千次阅读 2017-04-24 20:33:06
    使用SQL删除表中重复数据(单字段) You can't specify target table 'message' for update in FROM clause
  • 数据结构——从顺序表中删除重复的元素

    千次阅读 多人点赞 2018-11-10 17:18:57
    问题描述:设计一个算法从顺序表中删除重复的元素,并使剩余元素间的相对次序保持不变。 例如:原顺序为{4 2 8 4 2 1 2 1 3 5 2},执行该算法后,顺序为:{4 2 8 1 3 5}。 另外,顺序的初始值通过调用算法...
  • 怎么删除SQL表中重复数据

    千次阅读 2006-07-31 16:40:00
    我在一个表中有很多重复数据。 请问怎么把重复的数据保留一条其他的删除掉。 当然没有重复的就不用删。除。 方法一:select distinct * into #temp from 原//distinct是用来区分有没重复记录的delete 原insert...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 803,818
精华内容 321,527
关键字:

如何删除表中重复数据