使用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这一特性来有效地查找和删除表中的重复记录。 ####...
本文将详细讨论如何使用SQL语句来删除重复行,分为基于单个字段和多个字段的情况,并提供两种不同的方法。 首先,我们来看基于单个字段删除重复行的情况。假设我们有一个名为`people`的表,其中`peopleId`字段可能...
删除重复记录的方法原理:在Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,rowid确定了每条记录是在Oracle中的哪一个数据文件、块、行上。在重复的记录中,可能所有列的内容都相同,但rowid不会...
可以使用以下 SQL 语句来查找和删除重复记录: ``` -- 查找重复记录 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) -- 删除重复记录,只...
### 查找删除重复记录 #### 知识点一:理解重复记录的概念与影响 在数据库管理中,重复记录是指数据库表中的数据项完全相同或部分关键字段相同的多条记录。这些重复的数据可能会导致数据统计不准确、占用额外的...
查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...
除了使用子查询和RowId外,还有其他方法可以用来查找和删除重复记录。例如,我们可以使用游标来删除重复记录: ```sql declare @max integer, @id integer declare cur_rows cursor local for select 主字段, count...
下面将详细介绍如何使用SQL语句来查询和删除表中的重复数据。 ### (一)基本概念及实现方法 1. **查询表中重复数据** - **单字段重复数据查询** ```sql SELECT * FROM people WHERE peopleId IN ( SELECT ...
今天,我们将讨论删除数据库中重复记录的经典方法,包括使用 SQL 语句和其他技巧。 查找表中多余的重复记录 要删除数据库中重复记录,首先需要找到这些记录。我们可以使用 SQL 语句来实现这一点。例如,我们可以...
接下来,我们可以使用 DELETE 语句来删除这些重复记录,但保留 rowid 最小的记录: ```sql delete from R_RESOURCE_DETAILS where (FIELD_CODE) in (select FIELD_CODE from R_RESOURCE_DETAILS group by FIELD_...
类似地,删除这些重复记录,保留 `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 SELECT * FROM t_info a WHERE ((SELECT ...
DISTINCT 关键字可以用来从查询结果中去除重复行。下面是一个使用 DISTINCT 来创建一个不含重复记录的新表的例子: ```sql CREATE TABLE table_new AS SELECT DISTINCT * FROM table1; TRUNCATE TABLE table1; ...
使用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 SQL 语句,用于查找和删除重复数据: 1. **根据单个字段删除重复数据:** 当我们需要删除基于特定字段(如 `peopleId`)的重复数据时,可以先找出这些重复项,然后删除除最小 ...
- **复合字段**:当需要基于多个字段(如`peopleId`和`seq`)来查找重复记录时,可以在`GROUP BY`子句中同时包含这些字段。 - **SQL示例**: ```sql SELECT peopleId, seq FROM vitae GROUP BY peopleId, seq ...
在SQL数据库管理中,查找和删除重复数据是一项常见的任务,尤其在大数据量的环境中,保持数据的一致性和准确性至关重要。以下是一些高效的方法来处理这个问题: ### 第一种方法 这是基于行标识符(如Oracle的ROWID...
- 使用`SELECT DISTINCT`查询去除重复记录,并将结果存储到临时表`#Tmp`。 - 删除原始表,并将临时表中的数据重新导入到原表中。 以上是查询和处理SQL中重复记录的一些常用方法,每种方法都有其适用场景,实际应用...