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