PDF download 下载PDF文件 PDF download 下载PDF文件

当你使用Oracle时,可能会发现有重复记录。你可以通过查询重复行、使用其RowID,或者行地址来删除它们。在开始之前,你应该创建一个备份表,以防在删除记录之后需要引用它们。

方法 1
方法 1 的 4:

查询重复记录

PDF download 下载PDF文件
  1. 在本例中,查询示例重复记录“Alan”。通过输入下面的SQL,确保要删除的记录确实是重复的。
  2. 在本例中,列名为“Names”,你要用Names来替换“column_name”。
  3. 如果你尝试从其他列中查询重复记录,比如Alan的年龄,而不是他的名字,那么你需要在“column_name”这个地方输入“Ages”,以此类推。
     select 
     column_name 
     , 
     count 
     ( 
     column_name 
     ) 
     from 
     table 
     group 
     by 
     column_name 
     having 
     count 
     ( 
     column_name 
     ) 
     > 
     1 
     ; 
    
    广告
方法 2
方法 2 的 4:

删除单个重复记录

PDF download 下载PDF文件
  1. 在“SQL,”后输入“delete from names where name='Alan';”。注意,字母大写很重要,这样就可以删除所有名为“Alan”的行。在“SQL”后输入“commit”。 [1]
  2. 现在已经删除了所有名为“Alan”的行,可以通过输入“insert into name values ('Alan');”来插入一条记录。在“SQL”后输入“commit”,创建新行。
  3. 当你完成上述步骤后,通过输入“select * from names”检查一下,确保没有重复记录。
     SQL 
     > 
     select 
     name 
     from 
     names 
     ; 
     NAME 
     
    Alan Carrie Tom Alan rows selected . SQL > delete from names where name = 'Alan' ; rows deleted . SQL > commit ; Commit complete . SQL > insert into names values ( 'Alan' ); row created . SQL > commit ; Commit complete . SQL > select * from names ; NAME
    Alan Carrie Tom rows selected .
    广告
方法 3
方法 3 的 4:

删除多个重复记录

PDF download 下载PDF文件
  1. 在“SQL”后输入“select rowid, name from names;”。
  2. 在“SQL”后输入“delete from names a where rowid > (select min(rowid) from names b where b.name=a.name);”来删除重复记录。 [2]
  3. 完成上述操作后,输入“select rowid,name from names;”,然后输入“commit”,检查是否仍然存在重复记录。
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAB 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     AABJnsAAGAAAdfOAAF 
     Alan 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     ); 
     rows 
     deleted 
     . 
     SQL 
     > 
     select 
     rowid 
     , 
     name 
     from 
     names 
     ; 
     ROWID 
     NAME 
     ------------------ ------------------------------ 
     AABJnsAAGAAAdfOAAA 
     Alan 
     AABJnsAAGAAAdfOAAC 
     Carrie 
     AABJnsAAGAAAdfOAAD 
     Tom 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    广告
方法 4
方法 4 的 4:

删除包含指定列的行

PDF download 下载PDF文件
  1. 在“SQL”后输入“select * from names;”来查看行。
  2. 在“SQL”后输入“delete from names a where rowid > (select min(rowid) from names b where b.name=a.name and b.age=a.age);”来删除重复记录。 [3]
  3. 完成上述步骤后,输入“select * from names;”,然后输入“commit”,以检查是否成功删除了重复记录。
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     Alan 
     50 
     rows 
     selected 
     . 
     SQL 
     > 
     delete 
     from 
     names 
     a 
     where 
     rowid 
     > 
     ( 
     select 
     min 
     ( 
     rowid 
     ) 
     from 
     names 
     b 
     where 
     b 
     . 
     name 
     = 
     a 
     . 
     name 
     and 
     b 
     . 
     age 
     = 
     a 
     . 
     age 
     ); 
     row 
     deleted 
     . 
     SQL 
     > 
     select 
     * 
     from 
     names 
     ; 
     NAME 
     AGE 
     ------------------------------ ---------- 
     Alan 
     50 
     Carrie 
     51 
     Tom 
     52 
     rows 
     selected 
     . 
     SQL 
     > 
     commit 
     ; 
     Commit 
     complete 
     . 
    
    广告

警告

  • 登录自己的账号后创建一个备份表,这样可以用来显示进行任何删除之前的内容(防止出现任何问题)。
     SQL 
     > 
     create 
     table 
     alan 
     . 
     names_backup 
     as 
     select 
     * 
     from 
     names 
     ; 
     Table 
     created 
     . 
    
广告

关于本wikiHow

本页面已经被访问过4,086次。

这篇文章对你有帮助吗?

广告