oracle删除重复数据语句

oracle删除重复数据语句

问:oracle某个字段有重复数据,如何删除多余数据只保留1条
  1. 答:1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断。
    2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录。
    3、查找表中多余的重复记录(多个字段)。
    4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录。
    5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录。就完成了。
问: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. 答:1、distinct 关键字的用法:distinct 关键字后面的字段组合去重 distinct 必须
    select distinct id from test
    结果 ;根据id 去重
    select distinct id,name from test
    2、group by 分组去重
    select id,name from test group by id,name
    结果:根据id,name 组合去重
    3、row_number ()over(partition by 列 order by 列 asc | desc)方法
    3.1 row_number() over(order by column asc) 先对列column按照升序,再为每条记录返回一个序列号
    3.2 row_number() over(partition by column1 order by column2 asc) 先按照column1分组,再对分组后的数据根据column2 升序排列
  2. 答:select distinct rowid where 表名
  3. 答:分组后,根据rowid取就可以
oracle删除重复数据语句
下载Doc文档

猜你喜欢