删除重复记录的三种方法
2011-02-20 14:07
218 查看
本文介绍了三种删除重复记录的方法:
第一,二种方法利用了oracle的rowid。
第三种方法用到了临时表。
oracle中每行记录都有一个oracle自动产生的唯一标识即ROWID,我们利用它可以方便的删除表中的重复记录。
SQL> SELECT ROWID , ID FROM A;
ROWID ID
---------------------------- ----------
AAASlAAAGAAAAHDAAA 1
AAASlAAAGAAAAHDAAB 2
AAASlAAAGAAAAHDAAC 3
AAASlAAAGAAAAHGAAA 6
AAASlAAAGAAAAHGAAB 6
虽然A表中有两条ID为6的记录,但我们看到这两天记录的ROWID是不同的,
利用这个特点我们可以删除表中的重复记录。
方法一:
SQL> DELETE FROM A WHERE rowid not in (SELECT MIN(ROWID) FROM A GROUP BY ID);
1 row deleted
SQL> SELECT * FROM A;
ID
----------
1
2
3
6
方法二:
SQL> DELETE FROM a
2 WHERE ROWID != (SELECT MAX(ROWID) FROM a B WHERE a.id = B.Id);
1 row deleted
SQL> SELECT * FROM A;
ID
----------
1
2
3
6
方法三:临时表
1.建临时表temp_a1,临时表中存放没有重复的记录。
SQL> CREATE TABLE temp_a1 as
2 SELECT DISTINCT id from a;
Table created
SQL> SELECT * FROM TEMP_A1;
ID
----------
1
6
2
3
2.清空a表的数据
SQL> truncate table a;
Table truncated
3.将临时表temp_a1中的记录插入到a表中
SQL> INSERT INTO A
2 SELECT ID FROM TEMP_A1;
4 rows inserted
SQL> SELECT * FROM A;
ID
----------
1
6
2
3
SQL>
第一,二种方法利用了oracle的rowid。
第三种方法用到了临时表。
oracle中每行记录都有一个oracle自动产生的唯一标识即ROWID,我们利用它可以方便的删除表中的重复记录。
SQL> SELECT ROWID , ID FROM A;
ROWID ID
---------------------------- ----------
AAASlAAAGAAAAHDAAA 1
AAASlAAAGAAAAHDAAB 2
AAASlAAAGAAAAHDAAC 3
AAASlAAAGAAAAHGAAA 6
AAASlAAAGAAAAHGAAB 6
虽然A表中有两条ID为6的记录,但我们看到这两天记录的ROWID是不同的,
利用这个特点我们可以删除表中的重复记录。
方法一:
SQL> DELETE FROM A WHERE rowid not in (SELECT MIN(ROWID) FROM A GROUP BY ID);
1 row deleted
SQL> SELECT * FROM A;
ID
----------
1
2
3
6
方法二:
SQL> DELETE FROM a
2 WHERE ROWID != (SELECT MAX(ROWID) FROM a B WHERE a.id = B.Id);
1 row deleted
SQL> SELECT * FROM A;
ID
----------
1
2
3
6
方法三:临时表
1.建临时表temp_a1,临时表中存放没有重复的记录。
SQL> CREATE TABLE temp_a1 as
2 SELECT DISTINCT id from a;
Table created
SQL> SELECT * FROM TEMP_A1;
ID
----------
1
6
2
3
2.清空a表的数据
SQL> truncate table a;
Table truncated
3.将临时表temp_a1中的记录插入到a表中
SQL> INSERT INTO A
2 SELECT ID FROM TEMP_A1;
4 rows inserted
SQL> SELECT * FROM A;
ID
----------
1
6
2
3
SQL>
相关文章推荐
- ORACLE查询删除重复记录三种方法
- ORACLE查询删除重复记录三种方法
- ORACLE查询删除重复记录三种方法
- 三种方法实现mysql字段重复记录删除,保存Id最小的一条
- ORACLE查询删除重复记录三种方法
- ORACLE查询删除重复记录三种方法
- ORACLE查询删除重复记录三种方法
- ORACLE查询删除重复记录三种方法
- Sql Server删除数据表中重复记录 三种方法
- Python实现列表删除重复元素的三种常用方法分析
- sql查询重复记录、删除重复记录方法大全
- SQL语句 查询及删除重复记录的方法大全
- 用SQL删除重复记录的N种方法
- SQL语句实现删除ACCESS重复记录的两种方法
- SQL删除重复记录的N种方法
- sql语句删除重复的记录的方法
- MYSQL中删除重复记录的方法
- Oracle删除重复记录只保留一条数据的几种方法
- 【转贴】SQL查询重复记录删除重复记录方法
- SQL中删除和查询重复记录的方法