精华内容
下载资源
问答
  • DELETE FROM assembly_supply_chain a WHERE a.supply_chain_id> ( SELECT min(b.supply_chain_id ) FROM assembly_supply_chain b WHERE a.mtl_item_code=b.mtl_item_code and a.subinventory_c
    DELETE  FROM  assembly_supply_chain     a   WHERE a.supply_chain_id> (
    
    SELECT min(b.supply_chain_id )   FROM assembly_supply_chain  b   
    WHERE  a.mtl_item_code=b.mtl_item_code   and a.subinventory_code=b.subinventory_code and a.production_line_code=b.production_line_code
    and a.bh_type=b.bh_type and a.store_house_code=b.store_house_code and a.wip_supply_type=b.wip_supply_type 
    );



    DELETE  FROM  MTL_LOGICAL_ZONE   a   WHERE a.id > (
    SELECT min(b.id)   FROM MTL_LOGICAL_ZONE b   
    WHERE  b.mtl_item_id=a.mtl_item_id   and a.logical_zone_id=b.logical_zone_id
    );


    /*****物料组***************/
    DELETE  FROM  mtl_group_ref     a   WHERE a.id> (
    SELECT min(b.id )   FROM mtl_group_ref  b   
    WHERE  a.mtl_item_id=b.mtl_item_id   and a.mtl_category_id=b.mtl_category_id --and a.subinv_code=b.subinv_code
    );

    DELETE  FROM  MTL_LOGICAL_ZONE     a   WHERE a.id> (
    SELECT min(b.id )   FROM MTL_LOGICAL_ZONE  b   
    WHERE  a.mtl_item_id=b.mtl_item_id   and a.logical_zone_id=b.logical_zone_id 
    );







    展开全文
  • Oracle查询表里重复数据

    万次阅读 2018-12-21 11:01:15
    一、查询结果只显示重复的字段 1. 查询重复的单个字段(group by) select 重复字段A, count(*) from 表 group by 重复字段A having count(*) > 1 2.查询重复的多个字段(group by) select 重复字段A, ...

    一、查询结果只显示重复的字段

    1. 查询重复的单个字段(group by)

    select 重复字段A, count(*)
      from 表
     group by 重复字段A
    having count(*) > 1

    2.查询重复的多个字段(group by)

    select 重复字段A, 重复字段B, count(*)
      from 表
     group by 重复字段A, 重复字段B
    having count(*) > 1

     

    二、查询结果显示重复数据的所有字段

    1.查询重复的单个字段( rowid)

    -- table a,table b  代表同一张表 
    select a.*
       from table a, table b
      where a.重复字段 = b.重复字段
        and a.rowid != b.rowid
      order by a.重复字段

    排序是为了更直观的比较多个重复数据

    2.查询重复的多个字段( rowid)

    --  table a, table b 代表同一张表
    select a.*
       from table a, table b
      where a.重复字段A = b.重复字段A
        and a.重复字段B = b.重复字段B
        and a.rowid != b.rowid
      order by a.重复字段A

    三、删除重复数据

    1.删除重复数据中rowid 最大的数据

    -- 先查出来看一眼  table a,table b 属于同一张表  rowid 最大的数据
    select *
      from table a
     where rowid != (select max(rowid)
                       from table b
                      where a.重复字段 = b.重复字段)
    
    -- 删除这部分数据  rowid 最大的数据
    
    delete from table a
     where rowid != (select max(rowid)
                       from table b
                      where a.重复字段 = b.重复字段)

    2.删除重复数据中rowid 最小的数据

    -- 先查出来看一眼  table a,table b 属于同一张表  rowid 最小的数据
    select *
      from table a
     where rowid != (select min(rowid)
                       from table b
                      where a.重复字段 = b.重复字段)
    
    -- 删除这部分数据  rowid 最小的数据
    
    delete from table a
     where rowid != (select min(rowid)
                       from table b
                      where a.重复字段 = b.重复字段)

    3.删除所有重复的数据

    -- 慎重考虑后执行,后悔记得及时回滚。
    
    delete from table group by 重复字段 having count(重复字段) > 1

    注意:如果误删了数据,请看这里

    回滚也不管用了,记得点这个链接,找回刚才删除的数据

    展开全文
  • 一、背景  一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录。 二、解决 ...Oracle删除重复数据的SQL(删除所有): 删除重复数据的基本结构写法: 想要删除这些
  • oracle删除重复数据

    2021-03-29 15:38:14
    oracle删除重复数据表里的每条数据都有345678条一模一样的数据时,我们需要删除的话,就使用下面的语句来删除: delete from student where name in(select name from student group by name) and rowid not ...

    oracle删除表重复数据


    当表里的每条数据都有345678条一模一样的数据时,我们需要删除的话,就使用下面的语句来删除:

    delete from student where name in(select name from student group by name) 
    and rowid not in (select min(rowid) from student group by name)
    

    在这里插入图片描述
    在这里插入图片描述
    再看表:
    在这里插入图片描述

    展开全文
  • 《转》做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且...

    《转》做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且必须快速的把重复记录删掉。

    对此,总结了一下删除重复记录的方法,以及每种方法的优缺点。

    为了陈诉方便,假设表名为Tbl,表中有三列col1,col2,col3,其中col1,col2是主键,并且,col1,col2上加了索引。

    1、通过创建临时表

    可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下:

     

    creat table tbl_tmp (select distinct* from tbl);

    truncate table tbl;            //清空表记录i

    nsert into tbl select * from tbl_tmp;//将临时表中的数据插回来。

     

    这种方法可以实现需求,但是很明显,对于一个千万级记录的表,这种方法很慢,在生产系统中,这会给系统带来很大的开销,不可行。

    2、利用rowid

    在oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会相同。SQL语句如下:

     

    delete from tbl where rowid in (select a.rowid

    from tbl a,            tbl b

    where a.rowid>b.rowid and a.col1=b.col1 and a.col2 = b.col2) 

     

    如果已经知道每条记录只有一条重复的,这个sql语句适用。但是如果每条记录的重复记录有N条,这个N是未知的,就要考虑适用下面这种方法了。

    3、利用max或min函数

    这里也要使用rowid,与上面不同的是结合max或min函数来实现。SQL语句如下

     

    delete from tbl a

    where rowid not in (

              select max(b.rowid)           

              from tbl b

               where a.col1=b.col1 and a.col2 = b.col2);            //这里max使用min也可以 

     

    或者用下面的语句

     

    delete from tbl awhere rowid<(

                 select max(b.rowid)           

                 from tbl b

                 where a.col1=b.col1 and a.col2 = b.col2);            //这里如果把max换成min的话,前面的where子句中需要把"<"改为">" 

     

    跟上面的方法思路基本是一样的,不过使用了group by,减少了显性的比较条件,提高效率。SQL语句如下:

     

    deletefrom tbl where rowid not in (

                    select max(rowid)           

                   from tbl tgroup by t.col1, t.col2);

     

    delete from tbl where (col1, col2)  in (

                       select col1,col2

                        from tblgroup bycol1,col2havingcount(*)            >1) and rowidnotin(selectnin(rowid)fromtblgroup bycol1,            col2havingcount(*) >1)    ----???

    还有一种方法,对于表中有重复记录的记录比较少的,并且有索引的情况,比较适用。假定col1,col2上有索引,并且tbl表中有重复记录的记录比较少,SQL语句如下4、利用group by,提高效率

    展开全文
  • 删除oracle表里重复记录

    千次阅读 2011-07-21 12:58:23
    查找表里的重复记录select count(*) from table_name where rowid in (select a.rowid from table_name a, table_name b where a.rowid 删除表里重复记录delete from
  • 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from...
  •  一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录。  二、解决  select id from group by id having count(*) > 1  按照id分组并计数,某个id号那一组的数量超过1条...
  • 一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且必须快速的把重复记录...
  • oracle 删除重复数据

    2014-05-21 15:03:44
     一、对于部分字段重复数据删除  1.查询重复的数据  select 字段1,字段2, count(*) from 表名 group by 字段1,字段2 having count(*) > 1  例:Select owner from dba_tables group by owner h
  • oracle删除重复数据

    2008-02-01 23:21:00
    查找重复数据select count(*), id from test group by id having count(id) &gt; 1详见http://www.cnblogs.com/shw0315/articles/305959.html例子:登录日志表里有128794条记录,执行以下sql delete from test ...
  • 解决思路 1.首先判断哪些是重复记录。 2.拿出重复记录中的一条。...3.删除这条记录。 思路实现过程及遇到问题 1.首先判断哪些是重复记录。 SELECT itemID,Id FROM people GROUP BY itemID HAVING ...
  • *确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点) *用以下语句找出删除数据:select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss') *把删除的...
  • ORACLE删除掉两条一模一样的重复数据 在oracle的数据处理中,有时会出现数据重复插入,并且不存在主键的情况,如何删除掉两条一模一样的数据中的一条并保留任意一条。 1.使用临时表处理 在两条重复数据一模一样的...
  • 正在看的ORACLE教程是:oracle快速删除重复的记录。做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统...
  • oracle 快速删除大批量数据方法(全部删除,条件删除删除大量重复记录) ** 全部删除 如果是删除某个表的所有数据,并且不需要回滚,使用 TRUNCATE 就ok了。 SQL> truncate table table_name; 条件删除 如果...
  • 这里的重复数据指数据库中每一列的值都相同的数据,有时候也许是没有主键的原因导致数据可能重复,或者是,除了主键,其他数据重复,那么下面的方法可以都这些重复数据进行删除,保留下重复数据中的一行可以。...
  • 遇到某表sys_param_value数据没有主键,好多数据重复重复的是整条记录都一样。开始一条一条删除,但是发现太费事,一万多条数据。后来百度下有没有方法,发现还真有。参照冷月宫主的完全去重方法...
  • 比如,某个表要按照id和name重复,就算重复数据 1 2 delete from 表名 where rowid not in (select min(rowid) from 表名 group by id,name); commit; 如果以...
  • Oracle删除重复数据只留一条 查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select*from表whereIdin(selectIdfrom表groupbyIdhavingcount(Id)>1) 2、删除表中...
  • 做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且必须快速...
  • 数据清理的时候常常会清除表中的重复数据,那么在oracle中怎么处理呢?,下面介绍三种方法 创建测试数据: create table dupes(id integer,name varchar(100)); insert into dupes VALUES(1,'NAPOLEON'); ...
  • Oracle 删除同一张表中重复数据

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

    千次阅读 2020-06-03 14:35:21
    1、查找表中多余的重复记录,重复记录是根据单个字段(userCode)来判断 ...2、删除表中多余的重复记录,重复记录是根据单个字段(userCode)来判断,只留有rowid最小的记录 delete from user where userCode
  • 今天数据库除了个问题:项目中的一张表,数据是从另外一个系统中相同的表里弄过来...将原表中的不重复数据放入中间表,  3.删除原表数据  4.将中间表数据放入原表  5.删除中间表 --创建中间表 CREATE TABLE ...
  • oracle删除重复记录

    2012-04-10 23:46:52
    做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而且是生产系统。也就是说,不能把所有的记录都删除,而且必须快速...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,540
精华内容 3,816
关键字:

oracle删除表里重复的数据