Oracle, 在数据库中的同一个表中有相同的记录, id是主键,也有相同的,就是当时导入数据的时候出错了,用存储过程怎么修改,把相同的记录改成一条

解决方案 »

  1.   

    如果是需要合并两个结果集的,需要有个merge规则,还是仅仅删除多余的一天或者几条记录就行了。
      

  2.   


    如果是直接删除的话可以
    SQL>delete from table_a where rowid in (select rowid from (select rowid, id, count(1) over(partition by id) cnt, row_number() over(partition by id order by id) r_no from table_a) where cnt >1 and r_no > 1);如果是需要合并的话,就看你的逻辑来定了,简单用sql,复杂用procedure。
      

  3.   

    create table unique_id as
    select max(id) id from t1; delete from t1 where id not in (select  id from unique_id );drop table unique_id;如果数据量太大。 会慢。
    你先试一下。
    还有别的方法。
      

  4.   


    这个可以吗? unique_id里只有一个id呀。那这样不是把t1删除的只剩下那个id的数据了呀。
      

  5.   


    你这个很有问题啊,根据你的说法,那不是只留下了表t1中id最大的那行数据,其余的都被删除了。
    不符合楼主的意思
      

  6.   


    不好意思 忘了 group by id。
    create table unique_id as 
    select max(id) id from t1 group by id; 
      

  7.   

    create table unique_id as 
    select max(id) id from t1 group by id; delete from t1 where id not in (select  id from unique_id ); drop table unique_id;