`

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

阅读更多

1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断

select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1)

 

2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录

DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM 表 GROUP BY id HAVING COUNT(*) > 1);

 

3、查找表中多余的重复记录(多个字段)

select * from 表 a where (a.Id,a.seq) in(select Id,seq from 表 group by Id,seq having count(*) > 1)

 

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

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 min(rowid) from 表 group by Id,seq having count(*)>1)

 

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select * from 表 a where (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)

 

参考:

http://www.uncletoo.com/html/oracle/1101.html

分享到:
评论

相关推荐

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

    Oracle 查询重复数据并删除,只保留一条记录 Oracle 是一种关系型数据库管理系统,广泛应用于企业级数据库管理。然而,在实际应用中,数据重复问题经常会出现,例如在资源目录在线编目的资源项子表中存在多条重发...

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

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

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

    ### Oracle查询重复数据与删除重复记录方法 在Oracle数据库中,有时我们需要找出并处理重复的数据。这不仅可以提高数据质量,还能提升查询效率。本文将详细介绍几种常用的查询和删除Oracle数据库中重复记录的方法。...

    Oracle删除表中的重复数据

    通过`ROWNUM`函数和子查询的方式,进一步保证了即使有多条记录在上述列上完全相同,也只会有一条被插入到临时表中。 3. **删除原表并重命名临时表**:最后,通过`DROP TABLE tlinkman;`和`ALTER TABLE tlinkman2 ...

    oracle下如何删除重复数据的几种方法

    如果需要保留最新的记录,可以利用Oracle的`ROWID`属性(每条记录都有一个唯一的`ROWID`),保留重复记录中`ROWID`最大的那条记录: 1. **查询最新的记录** ```sql SELECT a.ROWID, a.* FROM 表名 a WHERE a....

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

    ROWID是Oracle中一个特殊的数据类型,它代表了表中每一条记录在物理存储上的唯一地址。利用ROWID可以非常高效地查询和定位到某条特定的记录。 **查询重复数据示例** 假设有一个人员表`peosons`,我们需要找出其中...

    oracle中如何删除重复的记录

    这通常涉及到选择一个合适的条件,例如保留每个组中的第一条记录,然后删除其他重复项。 ```sql DELETE FROM user1 WHERE AGE IN ( SELECT AGE FROM ( SELECT AGE, ROW_NUMBER() OVER (PARTITION BY AGE ORDER...

    wxh Oracle数据库删除重复记录的方法

    这条语句会删除所有具有相同`col1`和`col2`值的记录中的重复项,只保留ROWID最小的一行。 ### 3. 使用MAX/MIN函数删除重复记录 另一种方法是使用聚合函数MAX或MIN,结合子查询来删除重复记录。例如: ```sql ...

    oracle删除重复记录

    这种方法通过子查询来确定哪些记录是重复的,然后只保留一条记录。这里提供了一个修正后的示例代码: ```sql DELETE FROM T WHERE (T.a, T.b) IN ( SELECT A.a, A.b FROM T A WHERE EXISTS ( SELECT 1 FROM T ...

    oracle数据库各种删除重复数据方法

    通过这种方式,可以确保每组中至少保留一条记录。 3. **主查询**: 主查询使用上述两个子查询的结果来确定哪些记录需要被删除。具体来说,它会删除那些ID重复出现但ROWID不是最小的记录。 #### 方法二:基于ID和...

    oracle删除重复数据方法

    如果有多个字段共同决定一条记录的唯一性,可以使用多个字段进行分组和计数。例如,`peopleId` 和 `seq` 都需要考虑: ```sql -- 查找重复的 peopleId 和 seq SELECT * FROM vitae a WHERE (a.peopleId, a.seq) ...

    Oracle数据库删除表中重复记录的方法三则.txt

    - 此方法仅删除具有最大ROWID的重复记录,保留其余重复记录中的任意一条。 - 如果需要保留特定的记录(例如最新的记录),则需要根据实际情况调整条件。 - ROWID是一种内部地址,用于快速定位表中的行。但ROWID...

    删除重复数据的一种高效的方法(oracle)

    这种方法使用了窗口函数`row_number()`,通过对每个object_id分组并按ROWID排序,删除除第一条记录外的所有记录。SQL语句如下: ```sql DELETE FROM demo WHERE rowid IN (SELECT rid FROM (SELECT rowid rid, row_...

    oracle中如何删除重复的数据

    若想保留重复数据中最新的一条(即ROWID最大的一条),可使用如下查询: ```sql DELETE FROM 表名 a WHERE a.rowid != ( SELECT MAX(b.rowid) FROM 表名 b WHERE a.字段1 = b.字段1 AND a.字段2 = b.字段2 );...

    oracle删除非主键重复类型的数据

    这种情况下,我们通常需要保留一条记录并删除其余重复项,以确保数据的准确性和唯一性。 #### 2. 数据表结构 为了更好地理解问题和解决方案,首先需要了解涉及的表结构: - **amsys_holiday_apply**:假期申请表 ...

    ORACLE重复记录查询.docxORACLE

    这个操作会删除除了每个`peopleId`和`seq`组合中`rowid`最小的那一条记录之外的所有重复记录。 5. **多个字段重复记录查询(不包含最小rowid的记录)** 若要查找所有不包括`rowid`最小记录的重复项,只需保持与第...

    oracle 删除去掉重复项

    当数据库表中存在多个具有相同`peopleId`的记录时,可以采用以下SQL语句来删除这些重复项,只保留一个: ```sql DELETE FROM people WHERE peopleId IN (SELECT peopleId FROM people GROUP BY peopleId HAVING ...

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

    这种方法首先找出所有重复记录,然后仅保留每个重复记录组中Rowid最小的一条记录,其余记录全部删除。 2. **基于Rowid的比较** ```sql DELETE FROM cz a WHERE a.ROWID (SELECT MAX(ROWID) FROM cz b WHERE a.c1...

    Oracle查询表里的重复数据方法

    本篇文章将详细介绍如何在Oracle中查询和删除重复数据。 首先,我们要明确什么是重复数据。在一个表中,如果某些字段的值相同,且这些字段被视为识别记录的关键字段,那么这些记录就被认为是重复的。例如,`person`...

Global site tag (gtag.js) - Google Analytics