oracle删除重复数据

oracle删除重复数据

问:Oracle数据库重复数据删除的几种方法
  1. 答:用这种效率最高的就可以
    比如,某个表要按照id和name重复,就算重复数据
    delete from 表名 where rowid not in (select min(rowid) from 表名 group by id,name);
    commit;如果以id,name和grade重复算作重复数据
    delete from 表名 where rowid not in (select min(rowid) from 表名 group by id,name,grade);
    commit;注意:min也可用max替代
问:oracle查询重复数据方法
  1. 答:比方说
    在A表中存在一个字段 “name” ,
    而且不同记录之间的 “name” 值有可能会相同,
    现在就是需要查询出在该表中的各记录之间, “name” 值存在重复的项;
    如果还查性别也相同大则如下:
    有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重
    复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
    就可以得到无重复记录的结果集。
    如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
    发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
    假设有重复的字段为 Name , Address ,要求得到这两个字段唯一的结果集
    最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写
    在select子句中省去此列)
问:oracle查询出现的重复记录怎么去除
  1. 答:可按如下方法去除:
    如,test表中有如下数据:
    现在要删除那么重复的数据,只保留其中一条,可用如下语句:
    delete from test where rowid not in (select max(rowid) from test group by name);
    commit;
    执行后结果为:
  2. 答:用distinct
    比如,select ditinct number from xxxxx;这样就把重复的去除了
  3. 答:可以用distinct 关键字
    select distinct aa, from tabname
    具体看你什么原因出现的重复?
    是sql语句错误,比如关联条件没有写全。
    还是数据本身就重复?
oracle删除重复数据
下载Doc文档

猜你喜欢