oracle查询结果去重复
2022-12-29阅读(299)
问:oracle查询重复数据方法
- 答:比方说
在A表中存在一个字段 “name” ,
而且不同记录之间的 “name” 值有可能会相同,
现在就是需要查询出在该表中的各记录之间, “name” 值存在重复的项;
如果还查性别也相同大则如下:
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重
复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
假设有重复的字段为 Name , Address ,要求得到这两个字段唯一的结果集
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写
在select子句中省去此列)
问:在oracle数据库中,怎样查询出只有一个字段的表的重复数据?
- 答:方法一:可以通过group by 进行分组。\x0d\x0asql:select username,count(username) from tablename grop by username;\x0d\x0a解释:以上sql就是通过分组函数读取出tablename表中username的值和每个不同值的统计个数。\x0d\x0a方法二:可以通过distinct函数 进行去重查询。\x0d\x0asql:select distinct username from tablename\x0d\x0a解释:本sql就是查询出所有的tablename表中的username值(不重复)。
问: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语句错误,比如关联条件没有写全。
还是数据本身就重复?