oracle删除重复数据语句
问:oracle某个字段有重复数据,如何删除多余数据只保留1条
- 答:1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断。
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录。
3、查找表中多余的重复记录(多个字段)。
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录。
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录。就完成了。
问:Oracle数据库重复数据删除的几种方法
- 答:用这种效率最高的就可以
比如,某个表要按照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、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 升序排列 - 答:select distinct rowid where 表名
- 答:分组后,根据rowid取就可以
本文来源: https://www.lunwen90.cn/article/4f39dfd16062249776ba0e3f.html