删除重复记录的三种方法

    技术2026-09-02  3

    本文介绍了三种删除重复记录的方法:

    第一,二种方法利用了oracle的rowid。

    第三种方法用到了临时表。

     

    oracle中每行记录都有一个oracle自动产生的唯一标识即ROWID,我们利用它可以方便的删除表中的重复记录。

     

    SQL> SELECT ROWID  , ID  FROM A;

    ROWID                                  ID----------------------------  ----------AAASlAAAGAAAAHDAAA          1AAASlAAAGAAAAHDAAB          2AAASlAAAGAAAAHDAAC          3AAASlAAAGAAAAHGAAA          6AAASlAAAGAAAAHGAAB          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>

    最新回复(0)