zoukankan      html  css  js  c++  java
  • oracle 表按照字段快速去重

    --select * from T_FPCPFUNC for update
    --select count(*) ct from T_FPCPFUNC group by govyear,govid,sysid,fpguid order by ct desc
    declare
    --声明
    v_temp_table varchar2(32);
    v_tablename varchar2(32);
    type t_columns is table of varchar2(100); --类型
    cols t_columns ; --字段

    v_str1 varchar2(100);
    v_str2 varchar2(100);
    v_sql varchar2(1000);

    begin
    v_temp_table := 'TEMP_DISTINCT'; --临时表名
    v_tablename := 'T_FPCPFUNC'; --需要去重的表名 --需要修改
    cols:=t_columns('govyear','govid','sysid','fpguid'); --去重的对应字段 ----需要修改
    for i in 1 .. cols.count loop
    v_str1 := v_str1||' b.'||cols(i)||',';
    v_str2 := v_str2||' a.'||cols(i)||',';
    end loop;
    v_str2 := substr(v_str2,0,length(v_str2)-1);
    --创建临时表,临时表中保存重复的数据和rowID
    v_sql :='create table '||v_temp_table||' as select '||v_str1||'b.rowid as dataid from '||v_tablename||' b where b.rowid not in (select MAX(a.ROWID) dataid from '||v_tablename||' a GROUP BY '||v_str2||')';
    --以临时表中rowID为唯一指定删除数据库中的重复数据
    EXECUTE IMMEDIATE v_sql;
    EXECUTE IMMEDIATE 'delete from '||v_tablename||' a where a.rowid in (select b.dataid from '||v_temp_table||' b)';
    commit;
    --删除临时表
    EXECUTE IMMEDIATE'drop table '||v_temp_table;

    end;

  • 相关阅读:
    ACM-ICPC 2018 南京赛区网络预赛 J.Sum
    汉诺塔
    汉诺塔
    D
    D
    数学小定理
    数学小定理
    Python index()方法
    Python endswith()方法
    Python encode()方法
  • 原文地址:https://www.cnblogs.com/sx2zx/p/11458048.html
Copyright © 2011-2022 走看看