`
蔡华江
  • 浏览: 107607 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle删除重复记录,只保留一条记录

阅读更多
DELETE FROM hs a
      WHERE ROWID <> (SELECT MIN (ROWID)
                        FROM hs b
                       WHERE a.hsflid = b.hsflid AND a.flqw_id = b.flqw_id);

 先找到记录对应的ROWID的最小值,并跟据这个最小值来判断是否删除。

 

看了其它很多的方法,不过最后都脱离不了使用ROWID,不知道直接删除,不通过临时表,有没有其它的办法?!

分享到:
评论
2 楼 NeverGiveUpToChange 2013-12-18  
受教了!学习下……
1 楼 1zebra 2010-03-07  
在大数据量下 ,上面语句的执行效率是很低的,可以考虑建立临时表,讲需要判断重复的字段、rowid插入临时表中,然后删除的时候在进行比较。

或者直接用分析函数。

相关推荐

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

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

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

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

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

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

    oracle中如何删除重复的记录

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

    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 ...

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

    删除Oracle数据库中的重复记录是数据清洗和维护过程中的重要一环。不同的方法适用于不同的场景和数据量大小。创建临时表的方法适合数据量较小的情况,而使用ROWID、MAX/MIN函数或GROUP BY和HAVING子句则更适合处理大...

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

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

    ORACLE重复记录查询.docxORACLE

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

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

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

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

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

    Oracle删除表中的重复数据

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

    SQL对冗余数据的删除重复记录只保留单条的说明

    本文主要讨论如何在SQL中删除这些重复记录,只保留单条数据。 首先,我们需要理解如何在数据库理论中处理重复数据。在数据结构的线性表概念中,可以通过遍历列表并比较每个元素来消除重复。例如,在给定的Java代码...

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

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

    oracle 删除去掉重复项

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

    最高效的删除重复记录方法

    这样可以保留每个 `EMP_NO` 对应的第一条记录,而删除其他重复记录。 ##### 方法二:基于唯一标识符的删除 当存在多个字段组合能唯一标识一条记录时,可以使用子查询结合 GROUP BY 和 HAVING 子句来找到重复记录,...

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

    2. **保留一条记录**:对于每组重复记录,我们需要保留一条记录。 3. **删除多余记录**:最后,删除所有剩余的重复记录。 接下来,我们将详细介绍如何通过SQL语句实现上述操作。 #### 4. SQL 实现 根据上述需求,...

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

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

    oracle删除重复数据方法

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

    Delphi自动删除数据库中重复记录..rar

    // 如果主键值相同,表示重复,删除前一条记录 if CurrentRecord = LastRecord then ADataset.Prior.Delete; end; // 移动到下一条记录 ADataset.Next; end; end; ``` 这个示例中的 `RemoveDuplicates` ...

Global site tag (gtag.js) - Google Analytics