Oracle 数据库中的数据表中存在重复的记录项。对重复的记录只保留一条。
重复的记录根据多个字段判断:
查找重复的数据:
select * from 表名 a
where (a.字段1,a.字段2) in (select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1)
删除重复的数据,只保留 rowid 最小的记录(若保留最大的记录,红色部分改为 max)。
delete from 表名 a
where (a.字段1,a.字段2) in (select 字段1,字段2 from 表名 group by 字段1,字段2 having count(*) > 1)
and rowid not in (select min(rowid) from 表名 group by 字段1,字段2 having count(*)>1)
重复的记录根据单个判断:
查找重复的数据:
select * from 表名
where 字段 in (select 字段 from 表名 group by 字段 having count(字段) > 1)
删除重复的数据,只保留 rowid 最小的记录(若保留最大的记录,红色部分改为 max)。
delete from 表名
where 字段 in (select 字段 from 表名 group by 字段 having count(字段) > 1)
and rowid not in (select min(rowid) from 表名 group by 字段 having count(字段)>1)