这个问题就是要删除表中重复的记录,查询的sql语句如下:\x0d\select id,name from (\x0d\select id,name,row_numer() over(partition by id,name order by id,name) rn from tableA)\x0d\where rn>1;\x0d\删除的sql语句如下:\x0d\DELETE tableA WHERE ROWNUM = (SELECT ROWNUM\x0d\ FROM (SELECT id,name,\x0d\ ROW_NUMBER() OVER(PARTITION BY id,name ORDER BY id,name) RN\x0d\ FROM tableA )\x0d\ WHERE RN > 1);
法一: 用Group by语句 此查找很快的select count(num), max(name) from student –查找表中num列重复的,列出重复的记录数,并列出他的name属性group by numhaving count(num) >;1 –按num分组后找出表中num列重复,即出现次数大于一次delete from student(上面Select的)这样的话就把所有重复的都删除了。—–慎重法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:—- 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT FROM EM5_PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D –D相当于First,SecondWHERE EM5_PIPE_PREFABDRAWING=DDRAWING ANDEM5_PIPE_PREFABDSNO=DDSNO);—- 执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE FROM EM5_PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB DWHERE EM5_PIPE_PREFABDRAWING=DDRAWING ANDEM5_PIPE_PREFABDSNO=DDSNO);法一: 用Group by语句 此查找很快的select count(num), max(name) from student –查找表中num列重复的,列出重复的记录数,并列出他的name属性group by numhaving count(num) >;1 –按num分组后找出表中num列重复,即出现次数大于一次delete from student(上面Select的)这样的话就把所有重复的都删除了。—–慎重法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:—- 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录SELECT FROM EM5_PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D –D相当于First,SecondWHERE EM5_PIPE_PREFABDRAWING=DDRAWING ANDEM5_PIPE_PREFABDSNO=DDSNO);—- 执行下面SQL语句后就可以删除所有DRAWING和DSNO相同且重复的记录DELETE FROM EM5_PIPE_PREFABWHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB DWHERE EM5_PIPE_PREFABDRAWING=DDRAWING ANDEM5_PIPE_PREFABDSNO=DDSNO);
1,首先创建一个表,并在表中插入重复的记录,如下图所示。
2,插入好以后就看见表中已经有重复的数据了,如下图所示。
3,接下来在删除之前我们记得一定先备份,如下图所示。
4,然后排除重复的记录可以通过distinct字段设置,如下图所示,然后将去重的数据插入到新表中。
5,接着看到数据表下面多出来一个刚建的新表,如下图所示。
6,最后打开新表,就可以看到重复的数据都没有了,如下图所示。
以上就是关于oracle数据库中怎样删除一个表的重复数据全部的内容,包括:oracle数据库中怎样删除一个表的重复数据、如何查找和删除数据库中的重复数据、在SQL中怎么删除两个表中相同的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)