`
areshowl
  • 浏览: 48009 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用ROWID查找和删除重复行

SQL 
阅读更多

使用ROWID查找和删除重复行

SQL> create table tab4test(
  2  c1 char(4),
  3  c2 varchar2(20)
  4  )
  5  /

表已创建。

                                        
SQL> insert into tab4test values('1111','1111');

已创建 1 行。

SQL> insert into tab4test values('1112','1111');

已创建 1 行。

SQL> insert into tab4test values('1113','1111');

已创建 1 行。

SQL> insert into tab4test values('1114','1111');

已创建 1 行。

SQL> commit;

提交完成。

SQL>




创建重复记录:
SQL> insert into tab4test select * from tab4test;

已创建4行。

SQL> commit;

提交完成。

SQL> select rowid,c1,c2 from tab4test;

ROWID              C1   C2
------------------ ---- --------------------
AAAG/OAAGAAAAAMAAA 1111 1111
AAAG/OAAGAAAAAMAAB 1112 1111
AAAG/OAAGAAAAAMAAC 1113 1111
AAAG/OAAGAAAAAMAAD 1114 1111
AAAG/OAAGAAAAAMAAE 1111 1111
AAAG/OAAGAAAAAMAAF 1112 1111
AAAG/OAAGAAAAAMAAG 1113 1111
AAAG/OAAGAAAAAMAAH 1114 1111

已选择8行。

SQL>


查出重复记录
SQL> select rowid,c1,c2
  2  from tab4test
  3  where lunar.rowid!=(select max(rowid)
  4             from tab4test b
  5             where tab4test.c1=b.c1 and tab4test.c2=b.c2);

ROWID              C1   C2
------------------ ---- --------------------
AAAG/OAAGAAAAAMAAA 1111 1111
AAAG/OAAGAAAAAMAAB 1112 1111
AAAG/OAAGAAAAAMAAC 1113 1111
AAAG/OAAGAAAAAMAAD 1114 1111

SQL>



删除重复记录:
SQL> delete from tab4test a
  2  where a.rowid!=(select max(rowid)
  3             from tab4test b
  4             where a.c1=b.c1 and a.c2=b.c2);

已删除4行。

SQL> commit;

提交完成。

SQL> select rowid,c1,c2 from tab4test;

ROWID              C1   C2
------------------ ---- --------------------
AAAG/OAAGAAAAAMAAE 1111 1111
AAAG/OAAGAAAAAMAAF 1112 1111
AAAG/OAAGAAAAAMAAG 1113 1111
AAAG/OAAGAAAAAMAAH 1114 1111

SQL>
分享到:
评论

相关推荐

    Oracle中用Rowid查找和删除表中的重复记录

    ### Oracle中用Rowid查找和删除表中的重复记录 在Oracle数据库管理中,处理重复记录是一项常见的需求,尤其是在数据量较大的情况下。本文将详细介绍如何利用Rowid这一特性来有效地查找和删除表中的重复记录。 ####...

    SQL删除重复行

    本文将详细讨论如何使用SQL语句来删除重复行,分为基于单个字段和多个字段的情况,并提供两种不同的方法。 首先,我们来看基于单个字段删除重复行的情况。假设我们有一个名为`people`的表,其中`peopleId`字段可能...

    Oracle中查找和删除重复记录方法

    删除重复记录的方法原理:在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会...

    数据库 查询删除重复数据

    可以使用以下 SQL 语句来查找和删除重复记录: ``` -- 查找重复记录 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) -- 删除重复记录,只...

    查找删除重复记录

    ### 查找删除重复记录 #### 知识点一:理解重复记录的概念与影响 在数据库管理中,重复记录是指数据库表中的数据项完全相同或部分关键字段相同的多条记录。这些重复的数据可能会导致数据统计不准确、占用额外的...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...

    使用Oracle查询并删除重复记录的SQL语句

    除了使用子查询和RowId外,还有其他方法可以用来查找和删除重复记录。例如,我们可以使用游标来删除重复记录: ```sql declare @max integer, @id integer declare cur_rows cursor local for select 主字段, count...

    删除表中重复数据sql语句

    下面将详细介绍如何使用SQL语句来查询和删除表中的重复数据。 ### (一)基本概念及实现方法 1. **查询表中重复数据** - **单字段重复数据查询** ```sql SELECT * FROM people WHERE peopleId IN ( SELECT ...

    怎样删除数据库中重复记录

    今天,我们将讨论删除数据库中重复记录的经典方法,包括使用 SQL 语句和其他技巧。 查找表中多余的重复记录 要删除数据库中重复记录,首先需要找到这些记录。我们可以使用 SQL 语句来实现这一点。例如,我们可以...

    Oracle查询重复数据并删除,只保留一条记录.docx

    接下来,我们可以使用 DELETE 语句来删除这些重复记录,但保留 rowid 最小的记录: ```sql delete from R_RESOURCE_DETAILS where (FIELD_CODE) in (select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_...

    查询及删除重复记录的SQL语句.

    类似地,删除这些重复记录,保留 `ROWID` 最小的记录,可以使用: ```sql delete from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select ...

    查询和删除表中重复数据

    这个例子中,我们基于 `peopleId` 和 `seq` 字段的组合来确定重复的记录,然后删除除 `ROWID` 最小的记录之外的所有记录。 ### 总结 本文介绍了查询和删除表中重复数据的几种常用方法。对于查询部分,我们可以通过...

    sql 查询重复数据

    本文将详细介绍查询和处理重复数据的方法,包括查找所有重复记录、查找重复记录、删除重复记录等。 查找所有重复记录 使用以下 SQL 语句可以查找所有重复记录: ```sql SELECT * FROM t_info a WHERE ((SELECT ...

    如何查出同一张表中字段值重复的记录

    DISTINCT 关键字可以用来从查询结果中去除重复行。下面是一个使用 DISTINCT 来创建一个不含重复记录的新表的例子: ```sql CREATE TABLE table_new AS SELECT DISTINCT * FROM table1; TRUNCATE TABLE table1; ...

    Oracle查询重复数据与删除重复记录方法

    使用ROWID删除重复记录时,可以采用与查询重复记录类似的方法,但操作变为删除。 ```sql DELETE FROM table1 a WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM table1 b WHERE a.name1 = b.name1 AND a.name2 = b....

    oracle删除重复数据方法

    以下是一些针对不同情况的 Oracle SQL 语句,用于查找和删除重复数据: 1. **根据单个字段删除重复数据:** 当我们需要删除基于特定字段(如 `peopleId`)的重复数据时,可以先找出这些重复项,然后删除除最小 ...

    SQL语句查询重复记录大全

    - **复合字段**:当需要基于多个字段(如`peopleId`和`seq`)来查找重复记录时,可以在`GROUP BY`子句中同时包含这些字段。 - **SQL示例**: ```sql SELECT peopleId, seq FROM vitae GROUP BY peopleId, seq ...

    sql数据库一些查找删除方法.docx

    在SQL数据库管理中,查找和删除重复数据是一项常见的任务,尤其在大数据量的环境中,保持数据的一致性和准确性至关重要。以下是一些高效的方法来处理这个问题: ### 第一种方法 这是基于行标识符(如Oracle的ROWID...

    sql查询重复记录方法大全

    - 使用`SELECT DISTINCT`查询去除重复记录,并将结果存储到临时表`#Tmp`。 - 删除原始表,并将临时表中的数据重新导入到原表中。 以上是查询和处理SQL中重复记录的一些常用方法,每种方法都有其适用场景,实际应用...

Global site tag (gtag.js) - Google Analytics