oracle 查询重复数据并且删除, 只保留一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据一:重复数据根据单个字段进行判断1、首先,查询表中多余的数据,由关键字段(name)来查询。 select * from OA_ADDRESS_BOOK where name in (select name from OA_ADDRESS_BOOK group by name having count(name)>1) ? 2、删除表中重复数据,重复数据是根据单个字段(Name)来判断,只留有rowid最小的记录 delete from OA_ADDRESS_BOOK where (Name) in? (select Name from OA_ADDRESS_BOOK group by Name having count(Name) >1)? and rowid not in (select min(rowid) from OA_ADDRESS_BOOK group by Name having count(Name)>1) ? 二:重复数据根据多个字段进行判断1、首先,查询表中重复数据,由关键字段(Name,UNIT_ID)来查询。 select * from OA_ADDRESS_BOOK book1 where (book1.name,book1.unit_id) in? ? 2、删除表中重复数据,重复数据是根据多个字段(Name,UNIT_ID)来判断,只留有rowid最小的记录 ? ? delete from OA_ADDRESS_BOOK a where (a.Name,a.UNIT_ID) in? 3、查询表中重复数据,重复数据是根据多个字段(Name,UNIT_ID)来判断,不包含rowid最小的记录 ? select name,unit_id from OA_ADDRESS_BOOK a where (a.Name,a.UNIT_ID) in? (select Name,UNIT_ID having count(*) > 1)? and rowid not in (select min(rowid) from OA_ADDRESS_BOOK group by Name,UNIT_ID having count(*)>1) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |